目標:
什麼是ADO.NET Connection對象
Command對象
DataReader對象
Demo
什麼是ADO.NET:
ADO.NET是Microsoft最新推出的數據訪問技術,由Microsoft ActiveX Data Objects (ADO)改進而來。
Connection對象:
Connection對象表示與數據源之間的連接。可通過它的各種不同屬性指定數據源的類型、位置以及其他屬性,可用它來與數據庫建立連接或斷開連接。我們常用的方式為直接在其構造方法中將數據庫鏈接字符串當做參數,並實例出對象。
Connection對象的方法 :
Open()方法 用於打開數據庫連接
Close()方法 用於關閉數據庫連接
Command對象:
在數據源上執行的SQL語句或存儲過程。命令包含向數據庫提交的信息,並且由SQLCommand等特定於提供程序的類來實現。命令可以是存儲過程調用、UPDATE語句以及返回結果的語句等。
Command對象的方法 :
ExecuteNonQuery()方法 用於執行INSERT、DELELE、UPDATE等語句並返回受影響的行數。
ExecuteReader ()方法 用於返回只讀的結果集
ExecuteScalar()方法 用於返回執行結果的第一行第一例的值
DataReader對象:
DataReader從數據源中讀取只進且只讀的數據流。 注意:一般不需要直接創建SqlDataReader對象或OleDbDataReader對象,而是通過調用SqlCommand對象或OleDbCommand對象的ExecuteReader()方法來獲取這些對象。
DataReader對象的方法:
Close()方法:關閉SqlDataReader對象
Read()方法:使SqlDataReader對象移到下一條記錄上
GetName()方法:獲取指定列的名稱
GetValue()方法:以本地格式返回指定列的值
例:
(圖1)
通過上圖1,我們可以看的出是要為數據庫裡增加用戶的姓名及密碼,編號為自動生成。但是在窗體加載的時候,在下拉列表中,要加載俱所有的用戶列表,方便將來的查詢時選擇用戶。
那麼當我們把界面設計好之後,首先要做的事情是要與數據庫鏈接,並實現我們想要的操作。以下就是俱體的實現步驟:
1.在項目中,新建一個類文件命名為DataBase.cs
2.在DataBase文件中的頭部引入命名空間using System.Data.SqlClient,當然,我這是在操作SQL數據庫,如果要操作Access數據庫則需要引用入using System.Data.OleDb。
3.接下來就要在類的內部申明一個私有的字段,用來做為數據庫的連接對象。如:
private SqlConnection conn = new SqlConnection(@"server=.;database=qq;uid=sa;pwd=sa");
看以上代碼,我們應用到了Connection對象,在實列此對象時,需要在構造函數中寫入連接字符串,用來告知連接對象要連接的數據庫的服務器名,數據庫名,用戶名,及密碼。
4.跟著我們將此字段重構封裝為屬性,代碼如下:
protected SqlConnection Conn { get { return conn; } }
目的是為了讓Conn的訪問性更加靈活。
圖2
5.然後跟據建好的用戶表Users表圖2,建立一個相對應的類Users.cs 用來做Users表中所有的增刪改查等操作。打開類文件後,同樣要引入命名空間System.Data.SqlClient。然後使用Users類繼承Database類。如:
class Users:DataBase { } 6.在Users類中,寫增刪改查的方法: /// <summary> /// 本方法是用來做添加操作的 /// </summary> /// <param name="name">方法要求用戶名</param> /// <param name="pwd">方法要求密碼</param> /// <returns></returns> public int Add(string name,string pwd) { string strSql = "insert into users(username,userpwd)values('"+name+"','"+pwd+"')"; Conn.Open();//打開數據庫連接 SqlCommand cmd = new SqlCommand(strSql, Conn);//創建cmd執行對象 int i = cmd.ExecuteNonQuery();//使用執行對象cmd的方法ExecuteNonQuery()返回受影響行數。 Conn.Close();//關閉數據庫連接 return i;//返回i } /// <summary> /// 本方法是用來做刪除操作的 /// </summary> /// <param name="id">方法要求ID</param> /// <returns></returns> public int Delete(int id) { string strSql = "delete from users where id="+id; Conn.Open();//打開數據庫連接 SqlCommand cmd = new SqlCommand(strSql, Conn);//創建cmd執行對象 int i = cmd.ExecuteNonQuery();//使用執行對象cmd的方法ExecuteNonQuery()返回受影響行數。 Conn.Close();//關閉數據庫連接 return i;//返回i } /// <summary> /// 本方法是用來做更新操作的 /// </summary> /// <param name="id">方法要求ID</param> /// <returns></returns> public int Update(int id,string name,string pwd) { string strSql = "update users set username='"+name+"',userpwd='"+pwd+"' where id=" + id; Conn.Open();//打開數據庫連接 SqlCommand cmd = new SqlCommand(strSql, Conn);//創建cmd執行對象 int i = cmd.ExecuteNonQuery();//使用執行對象cmd的方法ExecuteNonQuery()返回受影響行數。 Conn.Close();//關閉數據庫連接 return i;//返回i } /// <summary> /// 查詢用戶列表 /// </summary> /// <returns></returns> public ArrayList ListArray() { string strSql = "select username from users"; ArrayList array = new ArrayList();//創建ArrayList對象 SqlCommand cmd = new SqlCommand(strSql, Conn);//創建cmd執行對象 Conn.Open();//打開數據庫連接 SqlDataReader dr = cmd.ExecuteReader();//使用執行對象cmd的方法ExecuteReader()執行SQL語句並返回結果集 while (dr.Read())//遍歷所有結果集 { array.Add(dr.GetValue(0));//取到結果集索引的第0列的值並添加到ArrayList對象中 } Conn.Close();//關閉數據庫連接 return array;//返回ArrayList對象 }
7.打開設計界面,在類中將Users類實例化為對象u如:Users u = new Users(),雙擊窗體標題欄,進入窗體加載事件所調用的方法。並寫代碼如下:
private void Form2_Load(object sender, EventArgs e) { foreach (string str in u.ListArray())//遍歷所有的Users類中ListArray方法所返回的ArrayList的值 { comboBox1.Items.Add(str);//將值添加到comboBox中 } }
8.返回設計界面雙擊添加按紐,進入到單擊按鈕事件所調用的方法寫代碼如下:
private void button1_Click(object sender, EventArgs e) { if (u.Add(UserName.Text, UserPwd.Text) > 0)//執行u對象中的方法Add()並返回受影響的行數,看是否大於0 { MessageBox.Show("添加成功了!");//如果大於0說明添加成功了,你可以查看一下數據庫中的值 } else { MessageBox.Show("數據出錯,請聯系管理員!");//否則的話添加失敗。 } }
然後運行起程序來,添加一個用戶試試吧 :)
本文出自 “共享經驗” 博客,請務必保留此出處http://jianle.blog.51cto.com/429692/107785