C# BETA2中操作ACCESS資料庫(二) (轉)

worldblog發表於2007-12-11
C# BETA2中操作ACCESS資料庫(二) (轉)[@more@]


BETA2中操作ACCESS(二)



上次說了如何在中“”語句,這次我們看看,如何執行“DELETE、UPDATE、INSERT”等語句。

我們這次同樣透過例子來看,其中我們用到了System.Data.Ole.OleDbCommand類,其實,我們在前面執行SELECT的時候也用到了!

下面我寫出我的:

//修改留言本中特定的資料
public Boolean UpdateNote(Notebook note)
{
Boolean tempvalue=false;
string str=""; //當時在這裡定義,是為了在出現異常的時候看看我的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 += "e='" +note. +"',";
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","
");
str=str.Replace("'","’");
str=str.Replace("x0020"," ");

return(str);
}

//恢復資料:把資料庫中的資料,還原成未處理前的樣子
public string UnDealString(string str)
{
str=str.Replace("str=str.Replace(">",">");
str=str.Replace("
","r");
str=str.Replace("’","'");
str=str.Replace(" ","x0020");

return(str);
}

我同時列出了兩個函式UnDealString()和DealString( ),他們是對與輸入內容做一些事先的處理和還原工作的!

這幾個程式因為都比較簡單,所以我就不多說了!
其實,我這樣的對資料庫操作也只是ADO。NET中的一部分,而透過DataSet來操作我現在還沒有仔細研究過,所以我也不能寫出什麼東西來,以後的這幾天我就準備好好看看那個東西了,到時候,我還會把我的感受寫出來和大家分享!

在補充一下,我前面用到的程式都是我在寫一個留言本的測試程式時候用到的!如果有朋友有興趣的話,我將貼出我的全部學習程式碼!

好了,我要開始我的事情了!下次再見!




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991251/,如需轉載,請註明出處,否則將追究法律責任。

相關文章