關(guān)于ADO內(nèi)存數(shù)據(jù)對象SqlDataAdapter類使用
ADO還是比較常用的,于是我研究了一下ADO內(nèi)存數(shù)據(jù)對象,在這里拿出來和大家分享一下,希望對大家有用。ADO(ActiveX Data Object的簡稱)是Microsoft為***和***大的數(shù)據(jù)訪問范例OLE DB而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)咏涌?。ADO通過OLE DB提供訪問和操作數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。
ADO不僅可以訪問關(guān)系型數(shù)據(jù)庫,還可以訪問非關(guān)系型數(shù)據(jù)庫。同時由于OLE DB是基于COM接口的技術(shù),使用這種技術(shù)可以直接對數(shù)據(jù)庫的驅(qū)動程序進行訪問,從而大大提供了訪問速度。與眾多的數(shù)據(jù)庫編程接口比較,ADO具有易于使用、速度快、內(nèi)存支出少和磁盤遺跡小等優(yōu)點。
#T#但由于Microsoft并沒有提供有關(guān)ADO的類,更不幸的是微軟所提供的ADO文檔幾乎沒有關(guān)于Visual C++的內(nèi)容,這使得Visual C++程序開發(fā)人員要想利用ADO訪問數(shù)據(jù)庫相對比較麻煩。然而這又是每個Visual C++程序員不可回避的問題。解決這個問題的比較可行的辦法就是自己編寫這個類。ADO內(nèi)存數(shù)據(jù)對象DataSet---從數(shù)據(jù)源中檢索出的數(shù)據(jù)在內(nèi)存中的緩存,包括表、行、列,還包含數(shù)據(jù)約束和關(guān)系數(shù)據(jù)是通過數(shù)據(jù)適配器從數(shù)據(jù)源進入到內(nèi)存數(shù)據(jù)對象中的。
ADO內(nèi)存數(shù)據(jù)對象SqlDataAdapter類使用SqlDataAdapter在數(shù)據(jù)庫和DataSet之間架起橋梁:
- void UseDataAdapter()
- {
- //1 連接數(shù)據(jù)庫
- //2 創(chuàng)建一個SqlDataAdapter對象
- SqlDataAdapter adapter = new SqlDataAdapter();
- //3 利用SqlDataAdapter查詢數(shù)據(jù),并把數(shù)據(jù)放在DataSet中
- SqlCommand selectCmd = new SqlCommand();
- selectCmd.Connection = myCon;
- selectCmd.CommandText = "SELECT SupplierID, CompanyName FROM Suppliers;";
- adapter.SelectCommand = selectCmd;
- DataSet dataSet = new DataSet("Suppliers");
- adapter.Fill(dataSet);//Fill數(shù)據(jù)
- Page.Response.Write("已連查詢數(shù)據(jù),并放入DataSet中<br />");
- //4 利用SqlDataAdapter對象操作語句
- //4.1 Update
- SqlCommand updateCmd = new SqlCommand();
- updateCmd.Connection = myCon;
- updateCmd.CommandText = "UPDATE Customers SET CompanyName='KFC' WHERE CustomerID = 'ALFKI'";
- adapter.UpdateCommand = updateCmd;
- //4.2 Delete
- SqlCommand deleteCmd = new SqlCommand();
- deleteCmd.Connection = myCon;
- deleteCmd.CommandText = "DELETE Customers WHERE CustomerID = 'ALFKI'";
- adapter.DeleteCommand= deleteCmd;
- //4.3 Insert
- SqlCommand insertCmd = new SqlCommand();
- insertCmd.Connection = myCon;
- insertCmd.CommandText = "INSERT INTO Customers(CustomerId) values ('ALFKI')";
- adapter.InsertCommand = insertCmd;
- //4.4 執(zhí)行操作
- adapter.Update(dataSet);
- Page.Response.Write("已連操作數(shù)據(jù),包括:修改、刪除、插入<br />");
- //5 關(guān)閉數(shù)據(jù)庫連接
- myCon.Close();
- Page.Response.Write("已關(guān)閉數(shù)據(jù)庫<br />");
- }