国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQLTutor的在線實(shí)驗(yàn)技術(shù)研究

2009-07-02 05:29郝耀軍王建國趙青杉
現(xiàn)代教育技術(shù) 2009年8期
關(guān)鍵詞:建構(gòu)主義

郝耀軍 王建國 趙青杉 王 宇

【摘要】SQLTutor是自主開發(fā)的一套SQL查詢語言智能學(xué)習(xí)系統(tǒng),它利用在線實(shí)驗(yàn)組織教學(xué),在實(shí)驗(yàn)平臺上集成了資源學(xué)習(xí)、案例演示、在線討論、綜合測試等內(nèi)容。SQLTutor最大的優(yōu)勢在于開放地允許學(xué)生對同一問題用不同的查詢語句來實(shí)現(xiàn),有利于提高學(xué)生的問題解決能力。論文剖析了SQLTutor實(shí)驗(yàn)平臺的工作機(jī)制及特點(diǎn),討論了實(shí)驗(yàn)語句的語法錯誤和邏輯錯誤的診斷技術(shù)。實(shí)踐證明,利用開放的在線實(shí)驗(yàn)技術(shù)有效地提高了學(xué)生的學(xué)習(xí)效果。

【關(guān)鍵詞】SQL查詢語言;在線實(shí)驗(yàn);錯誤診斷;建構(gòu)主義

【中圖分類號】G40-057 【文獻(xiàn)標(biāo)識碼】A 【論文編號】1009—8097(2009)08—0109—03

引言

SQL語言(Structured Query Language)是數(shù)據(jù)庫的核心語言,自IBM公司在上世紀(jì)80年代推出以來,得到了廣泛的應(yīng)用。

SQL語言雖然有結(jié)構(gòu)簡潔、簡單易學(xué)的特點(diǎn),但在SQL語言的實(shí)際教學(xué)中,學(xué)生往往是“上課一聽就懂,上機(jī)無法下手”。這種情況一方面是由于學(xué)生上機(jī)實(shí)驗(yàn)受時空限制,理論學(xué)習(xí)和上機(jī)操作不能同步進(jìn)行,造成了理論學(xué)習(xí)時的情境缺失和上機(jī)實(shí)驗(yàn)時的智力支持缺失;另一方面是由于RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))的交互不友好,對邏輯錯誤的診斷能力不強(qiáng),造成學(xué)生只知道自己的SQL語言是錯誤的,不知道錯在什么地方,學(xué)生上機(jī)實(shí)驗(yàn)時往往淺嘗輒止。

我們認(rèn)為解決上述問題較好的辦法是引入在線實(shí)驗(yàn)技術(shù),將理論學(xué)習(xí)與上機(jī)操作融為一體,排除實(shí)際上機(jī)學(xué)習(xí)環(huán)境中軟硬件的干擾,讓學(xué)生在“做”精心設(shè)計(jì)的上機(jī)實(shí)驗(yàn)的過程中自主建構(gòu)知識體系,同時提供資源學(xué)習(xí)、案例演示、在線討論、綜合測試等服務(wù)。

目前,在虛擬實(shí)驗(yàn)室的發(fā)展上存在兩種趨勢,一種是對仿真技術(shù)的深入研究和應(yīng)用,這要求仿真軟件能最大程度地描述實(shí)驗(yàn)情形[1];另一種是虛擬實(shí)驗(yàn)技術(shù)的研究和應(yīng)用,這同時也需要人工智能技術(shù)的支持[2]。

基于以上分析,我們針對SQL語言可提交到數(shù)據(jù)庫接口執(zhí)行的特殊性,開發(fā)了SQL查詢語言智能教學(xué)系統(tǒng)——SQLTutor,利用在線實(shí)驗(yàn)的學(xué)習(xí)方式輔助學(xué)生學(xué)習(xí)SQL語言,免去了學(xué)生實(shí)際上機(jī)安裝、配置數(shù)據(jù)庫和建立各種數(shù)據(jù)表的過程,便于學(xué)生集中精力學(xué)習(xí)主要內(nèi)容,提高動手操作能力,也便于教師控制學(xué)生的學(xué)習(xí)過程。本文將重點(diǎn)介紹SQLTutor在線實(shí)驗(yàn)平臺的工作機(jī)制及對錯誤實(shí)驗(yàn)語句的診斷技術(shù)。

一 實(shí)驗(yàn)平臺的工作機(jī)制

在本實(shí)驗(yàn)平臺主要提供SQL查詢語句的實(shí)驗(yàn),這里沒有利用關(guān)系數(shù)據(jù)庫的前臺查詢接口,而是直接通過用戶瀏覽器來進(jìn)行。在線實(shí)驗(yàn)平臺主要利用.NET平臺中的ADO.NET技術(shù)來執(zhí)行通過瀏覽器提交到服務(wù)器的SQL語句,并將服務(wù)器的執(zhí)行結(jié)果返回到客戶端,其工作界面如圖1所示。

實(shí)驗(yàn)平臺的工作機(jī)制如圖2所示,本實(shí)驗(yàn)平臺對數(shù)據(jù)流進(jìn)行的是只讀、只進(jìn)的檢索,可以使用ADO.NET中的 DataReader來提高應(yīng)用程序的性能并減少系統(tǒng)開銷。因?yàn)橐坏?shù)據(jù)可用,DataReader方法就立即檢索該數(shù)據(jù),而不是等待返回查詢的全部結(jié)果;查詢結(jié)果在查詢執(zhí)行時返回,存儲在客戶端的網(wǎng)絡(luò)緩沖區(qū)中,直到使用DataReader的Read方法對它們發(fā)出請求。

當(dāng)創(chuàng)建 Command 對象的實(shí)例后,可調(diào)用 Command.ExecuteReader 從數(shù)據(jù)源中檢索行,從而創(chuàng)建一個 DataReader。

提交到服務(wù)器執(zhí)行文本框中學(xué)生錄入的SQL語句的關(guān)鍵代碼片段如下所示:

{

string exsql;//exsql為學(xué)生的實(shí)驗(yàn)語句

string stsql;//stsql為實(shí)驗(yàn)平臺中提供的標(biāo)準(zhǔn)實(shí)驗(yàn)語句

exsql=Session["exsql"].ToString().Trim();

stsql=Session["ssql"].ToString().Trim();

SqlConnection myconn=new SqlConnection("Data Source=hyj;Integrated Security=SSPI;Initial Catalog=material"); //連接數(shù)據(jù)庫

myconn.Open(); //打開連接

SqlCommand mycomm=newSqlCommand(exsql+";"+stsql,myconn);//建立Command對象,執(zhí)行學(xué)生實(shí)驗(yàn)語句和標(biāo)準(zhǔn)實(shí)驗(yàn)語句

SqlDataReader myreader;

myreader=mycomm.ExecuteReader();//生成查詢結(jié)果集

}

二 實(shí)驗(yàn)語句的錯誤診斷技術(shù)

學(xué)生實(shí)驗(yàn)的SQL語句要提交到服務(wù)器端執(zhí)行,在這個環(huán)節(jié)系統(tǒng)必須判別學(xué)生寫的SQL語句的語法錯誤和邏輯錯誤。

1 語法錯誤的處理

主要利用后臺數(shù)據(jù)庫的錯誤提示由系統(tǒng)加工后反饋給學(xué)生,比如學(xué)生寫出“select from sinfo”這樣的SQL語句,很明顯提交到服務(wù)器端是無法執(zhí)行的。對于這類錯誤我們利用SQL Server2000的錯誤反饋技術(shù),在錯誤診斷中捕捉并加工這些后臺錯誤信息,然后在網(wǎng)頁中反饋給用戶。

在線實(shí)驗(yàn)平臺判斷語法錯誤并反饋錯誤信息的主要代碼如下:

catch(SqlException exc)

{

Response.Write(exc.Message.ToString()+exc.Number);

} //有語法錯誤時返回錯誤信息,exc.Message為提示信息,exc.Number為代號。

如上例的“select from sinfo”語句在本實(shí)驗(yàn)平臺提交后會給出錯誤反饋信息“在關(guān)鍵字 'from' 附近有語法錯誤”。

2 邏輯錯誤的處理

邏輯錯誤往往不易為學(xué)生察覺,在平時教學(xué)中,我們發(fā)現(xiàn)學(xué)生寫出SQL語句在上機(jī)實(shí)驗(yàn)通過后,并不仔細(xì)檢查對照檢索數(shù)據(jù)的正確與否,

例如,實(shí)驗(yàn)任務(wù):“請?jiān)趐ubs庫的employee表中查詢出1990年7月1日到12月31日(hire_date)雇傭的新員工的員工編號(emp_id),名字(fname),工作編號(job_id),列名為括號中的英文名”

學(xué)生可能會寫出如下語句:

select emp_id, fname, job_id from employee where hire_date between '1990-7-1' and '1990-12-31'

select emp_id, fname, job_id from employee where hire_date >'1990-7-1' and hire_date<'1990-12-31'

select emp_id, fname, job_id from employee where hire_date >'1990-7-1' and hire_date<='1990-12-31'

select emp_id, fname, job_id from employee where hire_date>='1990-7-1' and hire_date<='1990-12-31'

select emp_id, fname, job_id from employee where hire_date>'1990-6-30' and hire_date<='1990-12-31'

上面列舉的這些語句都是合法的SQL語句,但檢索的數(shù)據(jù)結(jié)果顯然不同。所以本實(shí)驗(yàn)平臺既要保證這些語句都可以正確執(zhí)行,同時還要指出這些語句的執(zhí)行結(jié)果與標(biāo)準(zhǔn)結(jié)果的差異。

這樣開放地對同一問題允許學(xué)生用不同的查詢語句實(shí)現(xiàn)有利于提高學(xué)生的問題解決能力,但同時也給系統(tǒng)對邏輯錯誤的判定帶來了挑戰(zhàn)。

對于可執(zhí)行的SQL語句的邏輯錯誤,我們的總體思路就是利用DataReader從數(shù)據(jù)庫提取學(xué)生實(shí)驗(yàn)語句的查詢結(jié)果集,然后和標(biāo)準(zhǔn)實(shí)驗(yàn)語句的查詢結(jié)果集進(jìn)行比較。在這里需要說明的是,標(biāo)準(zhǔn)實(shí)驗(yàn)語句在實(shí)驗(yàn)任務(wù)出示的同時就已讀入到系統(tǒng)中,在學(xué)生提交自己實(shí)驗(yàn)語句的同時一并提交到服務(wù)器端執(zhí)行。

由于當(dāng)DataReader打開時,該DataReader將以獨(dú)占方式使用Connection,在DataReader關(guān)閉之前,將無法對Connection執(zhí)行任何命令。而這里我們要在數(shù)據(jù)提取時返回兩個結(jié)果集,所以用到了DataReader提供的NextResult方法來順序循環(huán)訪問這些結(jié)果集,使用一個DataReader執(zhí)行兩條SQL語句。訪問到這些結(jié)果集后轉(zhuǎn)存到兩個矩陣中,然后利用這兩個矩陣進(jìn)行結(jié)果集的比較,進(jìn)而給出學(xué)生邏輯錯誤提示,對不一致的數(shù)據(jù)進(jìn)行特效顯示,給學(xué)生更直觀的感受。

主要代碼如下:

//連接數(shù)據(jù)庫、打開連接代碼省略

SqlCommand mycomm=newSqlCommand(exsql+";"+stsql,myconn);

SqlDataReader myreader;

myreader=mycomm.ExecuteReader(); //生成查詢結(jié)果集

int flag=1;//標(biāo)志是第幾個查詢結(jié)果集

do

{

int n=1; //行數(shù)

int i=myreader.FieldCount; //列數(shù)

while(myreader.Read())

{

if(flag==1)

{

for(int t=0;t

exresult[0,t]=myreader.GetName(t).ToString().Trim();//存儲字段名

for(int m=0;m

{

exresult[n,m]=myreader[m].ToString().Trim();//存儲記錄

}

}

if(flag==2)

{//省略存儲第二個查詢結(jié)果集的代碼,同上}

n++;

}

flag=2;

}while(myreader.NextResult());//遍歷兩個結(jié)果集,轉(zhuǎn)存到相應(yīng)的矩陣

……//由于篇幅關(guān)系,此處省略兩個結(jié)果矩陣的比較部分。

在上文的例子中,輸入“select emp_id, fname, job_id from employee where hire_date >'1990-7-1' and hire_date<'1990-12-31'”有如圖3的執(zhí)行結(jié)果,可以看出執(zhí)行結(jié)果不但給出實(shí)驗(yàn)結(jié)果的正確率為0.4,而且可以讓學(xué)生明顯地看到查詢結(jié)果少了3組數(shù)據(jù)。

三 結(jié)束語

在線實(shí)驗(yàn)的優(yōu)勢是明顯的,學(xué)生可以不受時間和空間的限制利用網(wǎng)絡(luò)進(jìn)行自主學(xué)習(xí)。本文基于建構(gòu)主義學(xué)習(xí)理論,利用在線實(shí)驗(yàn)設(shè)計(jì)和實(shí)現(xiàn)了SQL語言的智能教學(xué)系統(tǒng),為學(xué)生提供一個具有情景性、協(xié)作性、自主性和適應(yīng)性的學(xué)習(xí)環(huán)境,大大提高了學(xué)生學(xué)習(xí)的質(zhì)量與效率。在實(shí)踐中我們將2006級254名學(xué)生隨機(jī)分為兩組,實(shí)驗(yàn)組158名學(xué)生采用SQLTutor實(shí)驗(yàn)教學(xué)環(huán)境;對照組的96名學(xué)生則采用真實(shí)上機(jī)實(shí)驗(yàn)環(huán)境,在學(xué)習(xí)時間等同的情況下,對于4份測試,實(shí)驗(yàn)組學(xué)生平均成績比對照組高出14.8%。在以后的工作中,我們將開展學(xué)生在線實(shí)驗(yàn)記錄與學(xué)業(yè)成績評定的可靠性研究。

猜你喜歡
建構(gòu)主義
語言學(xué)習(xí)共同體之構(gòu)建與分析
基于建構(gòu)主義理論的計(jì)算機(jī)教育
旁批:建構(gòu)主義視域下的語文助讀抓手——以統(tǒng)編初中教材為例
DiscussiononBusinessEnglishLearningBasedonTheoryofConstructivism
基于建構(gòu)主義理論下的英語教學(xué)研究
心理學(xué)理論在會計(jì)課堂教學(xué)中的運(yùn)用
建構(gòu)主義教育理念下高中物理“圖”教學(xué)的有效方法研究
課程改革進(jìn)程中的建構(gòu)主義思想辨正
建構(gòu)主義與高中生物教學(xué)
建構(gòu)主義教學(xué)思想在中學(xué)數(shù)學(xué)課堂教學(xué)中的運(yùn)用
志丹县| 江源县| 博兴县| 辰溪县| 法库县| 广安市| 峨山| 岳阳市| 新闻| 同江市| 确山县| 都兰县| 汉沽区| 江源县| 青浦区| 长汀县| 新乡市| 凤山县| 剑阁县| 涟源市| 监利县| 虞城县| 呼玛县| 虎林市| 乌审旗| 太保市| 泌阳县| 富锦市| 太白县| 安义县| 金昌市| 饶河县| 上林县| 迁西县| 珠海市| 萨迦县| 墨玉县| 勃利县| 乌拉特后旗| 尤溪县| 松江区|