關(guān)于ADO內(nèi)存數(shù)據(jù)對(duì)象SqlDataAdapter類使用
ADO還是比較常用的,于是我研究了一下ADO內(nèi)存數(shù)據(jù)對(duì)象,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。ADO(ActiveX Data Object的簡(jiǎn)稱)是Microsoft為***和***大的數(shù)據(jù)訪問(wèn)范例OLE DB而設(shè)計(jì)的,是一個(gè)便于使用的應(yīng)用程序?qū)咏涌?。ADO通過(guò)OLE DB提供訪問(wèn)和操作數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)。
ADO不僅可以訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù),還可以訪問(wèn)非關(guān)系型數(shù)據(jù)庫(kù)。同時(shí)由于OLE DB是基于COM接口的技術(shù),使用這種技術(shù)可以直接對(duì)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序進(jìn)行訪問(wèn),從而大大提供了訪問(wèn)速度。與眾多的數(shù)據(jù)庫(kù)編程接口比較,ADO具有易于使用、速度快、內(nèi)存支出少和磁盤(pán)遺跡小等優(yōu)點(diǎn)。
#T#但由于Microsoft并沒(méi)有提供有關(guān)ADO的類,更不幸的是微軟所提供的ADO文檔幾乎沒(méi)有關(guān)于Visual C++的內(nèi)容,這使得Visual C++程序開(kāi)發(fā)人員要想利用ADO訪問(wèn)數(shù)據(jù)庫(kù)相對(duì)比較麻煩。然而這又是每個(gè)Visual C++程序員不可回避的問(wèn)題。解決這個(gè)問(wèn)題的比較可行的辦法就是自己編寫(xiě)這個(gè)類。ADO內(nèi)存數(shù)據(jù)對(duì)象DataSet---從數(shù)據(jù)源中檢索出的數(shù)據(jù)在內(nèi)存中的緩存,包括表、行、列,還包含數(shù)據(jù)約束和關(guān)系數(shù)據(jù)是通過(guò)數(shù)據(jù)適配器從數(shù)據(jù)源進(jìn)入到內(nèi)存數(shù)據(jù)對(duì)象中的。
ADO內(nèi)存數(shù)據(jù)對(duì)象SqlDataAdapter類使用SqlDataAdapter在數(shù)據(jù)庫(kù)和DataSet之間架起橋梁:
- void UseDataAdapter()
- {
- //1 連接數(shù)據(jù)庫(kù)
- //2 創(chuàng)建一個(gè)SqlDataAdapter對(duì)象
- 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對(duì)象操作語(yǔ)句
- //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ù)庫(kù)連接
- myCon.Close();
- Page.Response.Write("已關(guān)閉數(shù)據(jù)庫(kù)<br />");
- }