注意:本文暫時不講解 數據庫 的數據調出和顯示,因為他涉及的東西比較多,所以我們將另外詳細講解。本文主要要講的是數據庫的增加、刪除、修改。

一、定義 OleDbCommand 類型變量: MyCommand

要對數據庫進行增加、刪除、修改的操作我們還需要根據 MyConnectio 的類型定義一個 OleDbCommand 或者 SqlCommand 對象(請注意如果 MyConnection OleDbConnection 類型,那么只能用 OleDbCommand ;如果 MyConnection SqlConnection 類型,那么那么只能用 SqlCommand 。這里假設 MyConnection OleDbConnection 類)。(方法一)你可以象拖放 MyConnection 一樣拖放一個 OleDbCommand ,并命名為 MyCommand 。(方法二)在 ( 關聯文件 ).CS 文件中 protected System.Data.OleDb.OleDbConnection MyConnection; 下面手動添加:
protected System.Data.OleDb.OleDbCommand MyCommand;
private void InitializeComponent() this.MyConnection = new System.Data.OleDb.OleDbConnection(); 的下一行下面手動添加:
this.MyCommand = new System.Data.OleDb.OleDbCommand();
即可完成對 MyCommand 的定義
說明: MyCommand 的作用是用來執行 SQL 命令


二、利用定義的 MyConnectio MyCommand 對數據庫進行增加、刪除、修改

首先我們需要連接并打開一個數據庫(關于數據庫的連接和打開的操作請察看我們以前的文章)。打開數據庫: MyConnectio.Open();
然后我們需要給 MyCommand 指定要執行的 SQL 命令
: MyCommand.CommandText = "delete from admin";
接著我們需要給 MyCommand 指定數據源(對那個數據庫執行 SQL 命令): MyCommand.Connection = MyConnection; 然后我們執行 MyCommand 命令即可 : MyCommand. ExecuteNonQuery(); 如果我們在執行還有 "delete from admin"; 后需要接著執行 insert into admin (Admin_Code,Admin_Pwd) values( aa , bb ) ”,則我們只要再次指定 MyCommand 指定要執行的 SQL 命令 : MyCommand.CommandText = insert into admin (Admin_Code,Admin_Pwd) values( aa , bb ) ”,然后執行 MyCommand. ExecuteNonQuery(); 即可。(由于數據庫未關閉,所以我們不需要也不可以再次 MyConnectio.Open(); ,同理由于沒有改變 MyCommand 的數據源所以我們也沒有必要再次指定 MyCommand.Connection = MyConnection;

下面我們將詳細講解如何在 Page_Load() 中對數據庫的增加、刪除、修改,最后我們再來總結一下 ExecuteNonQuery(),ExecuteScalar(),ExecuteReader 的用法

--------------------------------------------------------------
1
增加新的記錄

private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
’打開數據庫
MyCommand1.CommandText = "insert into admin values(
aaddq , as , ss )";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();
’由于增加了一條記錄,所以返回
1
//
或者 MyCommand1.ExecuteReader(); 先增加一條記錄,然后返回一個 System.Data.OleDb.OleDbDataReader 類型的對象,該對象為
:EOF
//
或者 MyCommand1. ExecuteScalar(); 先增加一條記錄,返回未實列化的對象

MyConnection.Close();
}


-------------------------------------------------------------------
2
、 刪除現有數據
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
’打開數據庫
MyCommand1.CommandText = "delete * from admin";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();
’由于刪除了 n 條記錄,所以返回 n
//
或者 MyCommand1.ExecuteReader(); 先刪除 n 條記錄,然后返回一個 System.Data.OleDb.OleDbDataReader 類型的對象,該對象為
:EOF
//
或者 MyCommand1. ExecuteScalar(); 先刪除 n 條記錄,返回未實列化的對象

MyConnection.Close();
}


------------------------------------------------------------
3
、 修改現有數據
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
’打開數據庫
MyCommand1.CommandText = "update admin set admin_code=
212 ,Admin_pwd= 43 where admin_code= 23 ";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();
’由于修改了 1 條記錄,所以返回
n
//
或者 MyCommand1.ExecuteReader(); 先修改了 1 條記錄,然后返回一個 System.Data.OleDb.OleDbDataReader 類型的對象,該對象為
:EOF
//
或者 MyCommand1. ExecuteScalar(); 先修改了 1 條記錄,返回未實列化的對象

MyConnection.Close();
}


三、關于 MyCommand ExecuteNonQuery(),ExecuteScalar(),ExecuteReader 方法的區別 :
1
、 ExecuteNonQuery(): 執行 SQL ,返回一個整型變量,如果 SQL 是對數據庫的記錄進行操作,那么返回操作影響的記錄條數,如果是 SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)" 那么在表創建成功后該方法返回 1 。

例如:
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
’打開數據庫
MyCommand1.CommandText = "CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();
’首先建立一個 LookupCodes 表,然后返回
-1
//
或者 MyCommand1.ExecuteReader(); 首先建立一個 LookupCodes 表,然后返回一個 System.Data.OleDb.OleDbDataReader 類型的對象,該對象為
:EOF
//
或者 MyCommand1. ExecuteScalar(); 首先建立一個 LookupCodes 表,返回未實列化的對象

MyConnection.Close();
}


2
、 ExecuteScalar() :執行 SQL ,(如果 SQL 是查詢 Select )返回查詢結果的第一行第一列,如果(如果 SQL 不是查詢 Select )那么返回未實列化的對象,因為對象未實列化,所以返回結果不能 ToString(), 不能 Equals(null) ,也就是說返回結果沒有任何作用

3 executeReader 方法執行 SQL ,(如果 SQL 是查詢 Select )返回查詢結果的集合,類型是 System.Data.OleDb.OleDbDataReader ,你可以通過此結果,獲取查詢的數據。如果(如果 SQL 不是查詢 Select )那么返回一個沒有任何數據的 System.Data.OleDb.OleDbDataReader 類型的集合 (EOF)


四、總結:
ASP.Net
中對于數據庫的操作方法很多,要實現統一個目標不同的人可能會采取不同的方法,就好像在 ASP 中有的人喜歡用 RS.ADDNEW ,有的人喜歡用” Insert Into ”,主要是看個人的習慣,當然在性能上不同的方法可能會存在較大的差別,這個只能靠我們在平常的學習中一點一滴的積累經驗的。另外順便說一下 ASP.Net 頁提供類似如下方式的操作方法:
OleDbCommand2.Parameters("au_id").Value = TextBox1.Text
OleDbCommand2.Parameters("au_lname").Value = TextBox2.Text
OleDbCommand2.Parameters("au_fname").Value = TextBox3.Text
OleDbCommand2.Parameters("phone").Value = TextBox4.Text
OleDbCommand2.Parameters("address").Value = TextBox5.Text
OleDbCommand2.Parameters("city").Value = TextBox6.Text
OleDbCommand2.Parameters("st").Value = TextBox7.Text
OleDbCommand2.Parameters("zip").Value = TextBox8.Text
OleDbCommand2.Parameters("contract").Value = CheckBox1.Checked
cmdresults = OleDbcommand2.ExecuteNonQuery()
這個方法在我們以后的文章中,我們會慢慢給大家講解的,下一章我們要講的是如何從數據庫中讀取數據

前面我們已經說了如何操作 數據庫 ,但幾乎全部是通過 OleDbCommand OleDbDataReader 來做的,這次我們說說如何通過 OleDbDataAdapter 來操作數據庫!關于 OleDbDataAdapter 的用法實際上我們在以前已經講過了,由于 OleDbDataAdapter DataSet 和數據源之間建立聯系的一個橋梁,而 DataSet 用于對單層數據、 XML 數據和關系數據進行存儲、遠程處理和編程!。
我們曾經講過利用 Command 來對數據庫進行增加、刪除和修改操作,但是我們利用 DataSet DataAdapter 能夠更加方便的對數據庫進行操作,基本是我們可以認為 DataSet 是專門為 WEB 而設計的,這也是 ADO.NET ADO 的一個重要的區別。
下面是 DataSet SQL 數據的的關系圖, 通過這個圖我們可以看出 DataSet DataAdapter 以及 SQL 數據庫的關系。


下面我們來講解一下如何利用 DataSet DataAdapter 來操作上據庫
MyConnection.Open(); //
打開數據庫,請參考前面文章的內容
MyCommand.Connection = MyConnection; //
設置 Command ,請參考前面文章的內容

MyCommand. CommandText =
select * from admin ; // 設置 Command ,參考前面文章的內容
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); //
定義 OleDbDataAdapte 對象
MyDataAdapter.SelectCommand = MyCommand; //
設置 OleDbDataAdapte 對象的 SelectCommand 屬性
System.Data.DataSet MyDataSet = new System.Data.DataSet(); //
定義 DataSet
MyDataAdapter.Fill(MyDataSet,"admin"); //
通過 OleDbDataAdapte 對象的 SelectCommand 屬性填充
MyDataSet
MyConnection.Close(); //
關閉數據庫

整個過程分以下幾步:
1
.建立數據庫連接(打開數據庫,請參考前面文章的內容)

2
.建立 OleDbDataAdapter 對象!

3
.實例化 OleDbDataAdapter 對象!
4
.建立一個 DataSet 對象,執行 SQL 語句得到的表添加到其中

5
.關閉數據庫連接

通過上面的步驟我們就可以使用 DataBind DataSet 中的數據綁定到特定的控件上了?。ㄏ乱徽挛覀儗⒅v解如何邦定數據庫)

我們說過但是我們可以利用 DataSet DataAdapter 能夠更加方便的對數據庫進行操作,如何通過 OleDbDataAdapter 來執行數據庫的操作的,我們只需要對 DataSet 中的數據進行增加、刪除、修改等操作,然后在將 DataSet 提交給數據庫即可
//
利用利用 DataSet DataAdapter 操作數據庫
public Boolean DoDB()
{
MyConnection.Open(); //
打開數據庫,請參考前面文章的內容
MyCommand.Connection = MyConnection; //
設置 Command ,請參考前面文章的內容

MyCommand. CommandText =
select * from admin ; // 設置 Command ,參考前面文章的內容
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); //
定義 OleDbDataAdapte 對象
MyDataAdapter.SelectCommand = MyCommand; //
設置 OleDbDataAdapte 對象的 SelectCommand 屬性
System.Data.DataSet MyDataSet = new System.Data.DataSet(); //
定義 DataSet
MyDataAdapter.Fill(MyDataSet,"admin"); //
通過 OleDbDataAdapte 對象的 SelectCommand 屬性填充 MyDataSet

OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);// 關聯 DataSet 和數據庫的操作的,必不可少
foreach(DataRow dr in MyDataSet.Tables["Admin"].Rows)
{
if(dr["Admin_Code"].ToString().Trim().Equals("a"))
{
dr.Delete(); //
刪除 DataSet 中的行
}
}
MyDataSet.Tables["Admin"].Rows[0][0] = "ss";//
更新 DataSet 中第一行第一列的值
string [] dd = new String[3]{"a","b","v"};
MyDataSet.Tables["Admin"].Rows.Add(dd);//
增加一行
MyDataAdapter.Update(MyDataSet,"Admin");//
DataSet 中” Admin ”表中的數據提交給數據庫,完成數據庫的更新
MyConnection.Close();//
關閉數據庫
}

這個程序和我們前面用到的利用 Command delete 、 insert 、 update 例程是執行同樣的功能的,我這里改成了用 MyDataAdapter 來達到同樣的效果!

要通過 MyDataAdapter 執行對數據庫的操作,我們要有下面的幾步:

1 建立數據庫連接 MyConnection
2
實例化 OleDbDataAdapter 對象!

3
建立一個 DataSet 對象,并把執行 select 語句得到的記錄添加到其中

4
建立 OleDbCommandBuilder 對象! 并讓它與我們前面的 OleDbDataAdapter 對象關聯!語句如下:
OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);
5
DataSet 中包含表的特定記錄進行增加、刪除、修改

6 執行 OleDbDataAdapter 對象的 Update 命令更新數據庫,語句如下: MyDataAdapter.Update(ds,"notes");
7
關閉數據庫連接

總結:
DataSet
ADO.NET 中非常重要的內容,也是 ADO.NET ADO 的區別的一個重要表現,特別適合成批的數據操作,也是數據棒定的重要來源。 OleDbDataAdapter DataSet 和數據源之間建立聯系的一個橋梁,要熟練的使用 DataSet 我們需要熟練的掌握 OleDbDataAdapter 。下一章我們將講述 Data

對于用過 beta2 版的網友來說,學習本文的內容將會是十分的簡單,因為 .net 正式版和 beta2 版的差別不大,所以對于 beta2 中的程序你幾乎可以不作修改(或者只做少量修改)就可以再正式版中正常的運行。
在這里我們來講一下怎樣打開 數據庫 ,我們不贊同利用寫字本或者 editplus 等文本編輯器來編寫 asp.net ,所以本文的講述全是在 VS.NET 開發工具上的。
建立一個新的數據庫連接,首先我們從工具箱工雙擊 OleDbConnection 或者 雙擊 SqlConnection 如圖所示

?

注意: OleDbConnection SqlConnection 的區別在于: OleDbConnection 適合于連接任何類型的數據庫(如 Oracle , SQL Server , ACCESS 等等),而 SqlConnection 是專門用來連接 SQL Server(MS SQL) 數據庫的,據說效率比 OleDbConnection 高。如果你的數據庫是 MS SQL 那么你就雙擊 SqlConnection 吧,其他數據庫就用 OleDbConnection 吧。同樣的道理 SqlDataAdapter,SqlCommand 是專門用于 (MS SQL) 數據庫的,而 OleDbDataAdapter, OleDbCommand 適用于所有的數據庫,如果你雙擊的是 SqlConnection ,那么在今后的數據庫操作中你只能用 SqlDataAdapter,SqlCommand ,同樣的道理如果你雙擊的是 OleDbConnection ,那么在今后的數據庫操作中你只能用 OleDbDataAdapter, OleDbCommand 。在這里我們選擇 OleDbConnection 。
當我們雙擊 OleDbConnection 后在窗口的下端將會出現一個名為 oleDbConnection1 的數據庫連接源


我們可以在屬性窗口改變 oleDbConnection1 的名稱為 MyConnection,

連接數據庫在關鍵的步驟為:從上圖中的 ConnctionStr 中選擇 < 新建連接… > 然后將會彈出如下窗口:


選擇好數據庫的類型 “下一步”后 選擇數據庫的正確位置 如下圖


(測試連接 成功后)單擊確定,然后(雙擊編輯窗口任意空白位置)打開對應的 cs 文件,將會看到程序中自動加入了
protected System.Data.OleDb.OleDbConnection MyConnection;
代碼
而且在 private void InitializeComponent() 中加入了
this.MyConnection = new System.Data.OleDb.OleDbConnection();
//
// MyConnection
//
this.MyConnection.ConnectionString = @"Provider=SQLOLEDB.1;Persist Security
Info=False;User ID=sa;Initial Catalog=house;Data Source=CYH;Use Procedure
for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CYH;Use
Encryption for Data=False;Tag with column collation when possible=False";
//
現在要打開數據庫變得很簡單了,你只要使用
MyConnection.Open(); //
數據庫就打開了
MyConnection.Close();//
關閉數據庫
如你可以在 private void Page_Load(object sender, System.EventArgs e) 打開數據庫
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();
//
在此處放置用戶代碼對數據庫進行增加、刪除、修改、查詢等操作
MyConnection.Close();
}

?