我們這裡還是來講講DataSet吧,這是一個功能強大的東東,我們在上一節對它有了一個初步的瞭解,這裡我們要講其如果用來操作資料。也是很簡單的東東,但是功能強大,要講全,不太可能,因為DataSet和DataGrid控制項的講解就佔了.Net 協助的50%以上,而這個總共有23M...
這裡我們建立一個test.mdb資料庫,做為測試的資料庫,其中有一個名為aspcn的表,資料結構如圖:
圖 8-1
不需DataSet的數庫操作
在講DataSet的應用之前,我們來看看在ASP.net不使用DataSet如何對資料庫進行插入,更新,刪除.
要對資料進行插入,更新,刪除而又不能用DataSet,沒有辦法,只有用SQL直接來啦:),我這裡只講一下怎樣去插入,因為其它的操作只是改一下SQL語句,我想大家沒有問題吧。這裡由於使用的是mdb資料庫,那麼這次就要用ADO.net來操作了。
我們先看看整個原始碼再說
<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.ADO" %>
<Script Language="C#" Runat="Server">
public string myConnstring="Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";
ADOConnection MyConnection;
public void Page_Load(Object src,EventArgs e)
{
file://用戶提交資料
}
public void submit_Click(Object src,EventArgs e)
{
string username1 = Request.Form["username"];
string address1 = Request.Form["address"];
string school1 = Request.Form["shool"];
string strInsert="insert into aspcn(username,address,school)
values('"+username1+"','"+address1+"','"+school1+"')";
file://開始連接
try
{
MyConnection = new ADOConnection(myConnstring);
ADOCommand MyCommand = new ADOCommand(strInsert,MyConnection);
MyConnection.Open();
MyCommand.ExecuteNonQuery();
MyConnection.Close();
Info.Text="資料已經儲存";
}
catch(Exception ee)
{
Info.Text="發生錯誤:"+ee.Message;
}
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<asp:Label id="Info" runat=server /><br>
<form runat="server">
使用者名稱:<input type="text" name="username" size="20" ><br>
住址:<input type="text" name="address" size="20" ><br>
學校:<input type="text" name="school" size="20" ><br>
<input type="button" value="提交" runat="server" OnServerClick="submit_Click" >
<p>1</p>
</form>
</body>
</html>
上面的程式執行情況看下面兩個圖:
圖8-2 執行前
圖8-3 執行後
因為我們是用的Access,所以首先就要申明一下啦
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.ADO" %>
表明我們這裡使用的是ADO.net.
我們提交入資料庫的資料,來自於使用者的輸入,這裡使用的是一個我們常見到的<form>表單,初一看和普通的沒有什麼區別,但是我們仔細看看它的<form>中的屬性是什麼,runat="server",呵呵,就是這麼一個小小的標籤,這個程式的性質就變啦。這表明他是一個Web Form了。這裡我用了HTML控制項,目的就是為了讓大家看看ASP.net和ASP到底有哪些區別。
<form runat="server">
使用者名稱:<input type="text" name="username" ><br>
住址:<input type="text" name="address" ><br>
學校:<input type="text" name="school" ><br>
<input type="button" value="提交" runat="server" OnServerClick="submit_Click" >
</form>
在上面的代碼,有一點需要注意就是,觸發button控制項提交事件處理的是OnServerClick,這裡大家很少有注意,因為大家使用WEB控制項已成習慣,很容易就用了onClick事件,呵呵,這種錯誤很難發現,錯了都不知道怎麼錯的:)
下面我們就該在Submit_Click中處理提交事件了,首先是收集資訊,這裡我們又看到了久違的Request對象和Form方法。這個和ASP幾乎是一模一樣的,我也不想多說了。
string username1 = Request.Form["username"];
string address1 = Request.Form["address"];
string school1 = Request.Form["shool"];
接下來就是將收集來的資料寫入資料庫,關於資料庫的開啟和執行,我們上一節也講過了。這裡也就不羅嗦了。注意一下SQL語句的正確性就行。
string strInsert="insert into aspcn(username,address,school) values('"+username1+"','"+address1+"','"+school1+"')";
大家也要注意一下我的連接語句(因為很多人來問我,如何連結mdb資料庫,其實和asp是一樣,最主要是大家有些人不願意自已動手去實踐,問人已經成為了習慣)
public string myConnstring="Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";
這裡連接Access最實用的語句(個人認為),其實還有好多種寫法。比如:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/test/test.mdb
Data Source=aspcn
呵呵,本來這一節是要講DataSet的,沒有想到其它的文字一下子寫了這麼多,只好留到下一節去講DataSet了。