第二部分,BETA2操作ACCESS資料庫
來源:互聯網
上載者:User
access|資料|資料庫 朋友們好,總算又有時間了,搞了兩天,頭都大了!不過,真的是,。NET的東西太多了,簡直有一種眼花繚亂的感覺,看來還是需要靜下心來慢慢測試!我的學習觀點就是多寫程式,多練習,你可以不去記憶那些在資料或協助上能查到的東西,(我就沒有去記,即使是名字空間如何寫我都是看協助),但一定要理解了,而如何理解,最直接的方法就是通過程式來把那些東西直接展示在眼前!
好了,不多說了,接著上次的東西,我們繼續來看看,如何在。NET中操作資料庫(資料庫採用ACCESS 2000,至於SQL,我在以後有機會了在說吧,其實如果懂了,ACCESS的話,適當變變就可以操作SQL資料庫了!)
上次說了如何在ADO。NET中執行“SELECT”語句,這次我們看看,如何執行“DELETE、UPDATE、INSERT”等語句。
我們這次同樣通過例子來看,其中我們用到了System.Data.OleDb.OleDbCommand類,其實,我們在前面執行SELECT的時候也用到了!
下面我寫出我的程式:
//修改留言本中特定的資料
public Boolean UpdateNote(Notebook note)
{
Boolean tempvalue=false;
string sqlstr=""; //當時在這裡定義,是為了在出現異常的時候看看我的SQL語句是否正確
try
{
//用到了我前面寫的那個得到資料庫連接的函數
OleDbConnection conn = getConn(); //getConn():得到連線物件,
conn.Open();
//確定我們需要執行的SQL語句,本處是UPDATE語句!
sqlstr = "UPDATE notes SET ";
sqlstr += "title='" + note.title + "',";
sqlstr += "content='" + DealString(note.content) +"',";
sqlstr += "author='" + note.author + "',";
sqlstr += "email='" +note.email +"',";
sqlstr += "http='" +note.http +"'";
//sqlstr += "pic='" +note.pic +"'";
sqlstr += " where id=" + note.id;
//定義command對象,並執行相應的SQL語句
OleDbCommand myCommand = new OleDbCommand(sqlstr,conn);
myCommand.ExecuteNonQuery(); //執行SELECT的時候我們是用的ExecuteReader()
conn.Close();
//假如執行成功,則,返回TRUE,否則,返回FALSE
tempvalue=true;
return(tempvalue);
}
catch(Exception e)
{
throw(new Exception("資料庫更新出錯:" + sqlstr + "\r" + e.Message)) ;
}
}
這個例子是對於特定ID好的記錄進行UPDATE操作,具體解釋我都寫在了程式中,其中的與資料庫有關的語句是try內部的那些!
其實,我們同樣可以通過上面的那種模式執行INSERT、DELETE操作,下面我把我的程式列到下面!
/*刪除特定記錄,通過string類型的ID刪除欄位,在我的程式中,我把這個函數重載了,這樣我們就可以通過INT類型的ID參數來刪除特定的欄位了*/
public Boolean DelNote(string delid)
{
Boolean tempvalue=false;
string sqlstr="";
//串連資料庫
try
{
OleDbConnection conn = getConn(); //getConn():得到連線物件
conn.Open();
sqlstr = "delete * from notes where id=" + delid;
//定義command對象,並執行相應的SQL語句
OleDbCommand myCommand = new OleDbCommand(sqlstr,conn);
myCommand.ExecuteNonQuery();
conn.Close();
//假如執行成功,則,返回TRUE,否則,返回FALSE
tempvalue=true;
return(tempvalue);
}
catch(Exception e)
{
throw(new Exception("資料庫更新出錯:" + sqlstr + "\r" + e.Message)) ;
}
}
細心的朋友們應該能看到,其實這個程式和上面的相比,只是哪個SQL語句不同而已,其他的都基本一樣的!同樣的,我們想在資料庫中插入新的記錄的時候也可以用這樣的方式,程式如下:
//向留言本中添加資料
public Boolean AddNote(Notebook note)
{
Boolean tempvalue=false; //定義傳回值,並設定初值
//下面把note中的資料添加到資料庫中!
try{
OleDbConnection conn = getConn(); //getConn():得到連線物件
conn.Open();
//設定SQL語句
string insertstr="INSERT INTO notes(title, content, author, email, http, pic ,hits,posttime) VALUES ('";
insertstr += note.title +"', '";
insertstr += DealString(note.content) + "','";
insertstr += note.author + "','";
insertstr += note.email + "','";
insertstr += note.http + "','";
insertstr += note.pic + "',";
insertstr += note.hits + ",'";
insertstr += note.posttime +"')";
OleDbCommand insertcmd = new OleDbCommand(insertstr,conn) ;
insertcmd.ExecuteNonQuery() ;
conn.Close();
tempvalue=true;
}
catch(Exception e)
{
throw(new Exception("資料庫出錯:" + e.Message)) ;
}
return(tempvalue);
}
//處理資料,在把資料存到資料庫前,先屏蔽那些危險字元!
public string DealString(string str)
{
str=str.Replace("<","<");
str=str.Replace(">",">");
str=str.Replace("\r","<br>");
str=str.Replace("\'","’");
str=str.Replace("\x0020"," ");
return(str);
}
//恢複資料:把資料庫中的資料,還原成未處理前的樣子
public string UnDealString(string str)
{
str=str.Replace("<","<");
str=str.Replace(">",">");
str=str.Replace("<br>","\r");
str=str.Replace("’","\'");
str=str.Replace(" ","\x0020");
return(str);
}
我同時列出了兩個函數UnDealString()和DealString( ),他們是對與輸入內容做一些事先的處理和還原工作的!
這幾個程式因為都比較簡單,所以我就不多說了!
其實,我這樣的對資料庫操作也只是ADO。NET中的一部分,而通過DataSet來操作我現在還沒有仔細研究過,所以我也不能寫出什麼東西來,以後的這幾天我就準備好好看看那個東西了,到時候,我還會把我的感受寫出來和大家分享!
在補充一下,我前面用到的程式都是我在寫一個留言本的測試程式時候用到的!如果有朋友有興趣的話,我將貼出我的全部學習代碼!
好了,我要開始我的事情了!下次再見!