上次說了如何在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 + "" + 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 + "" + 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("","<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>","");
str=str.Replace("’","");
str=str.Replace(" ","x0020");
return(str);
}
我同時列出了兩個函數UnDealString()和DealString( ),他們是對與輸入內容做一些事先的處理和還原工作的!
這幾個程序因為都比較簡單,所以我就不多說了!
其實,我這樣的對數據庫操作也只是ADO。NET中的一部分,而通過DataSet來操作我現在還沒有仔細研究過,所以我也不能寫出什麼東西來,以後的這幾天我就准備好好看看那個東西了,到時候,我還會把我的感受寫出來和大家分享!
在補充一下,我前面用到的程序都是我在寫一個留言本的測試程序時候用到的!如果有朋友有興趣的話,我將貼出我的全部學習代碼!
好了,我要開始我的事情了!下次再見!