注意ADO.NET中容易混淆的概念(4)_.Net教程
推薦:解析asp.net開發(fā)與web標(biāo)準(zhǔn)的沖突問題Visual Studio .net從2003到現(xiàn)在的2008,一路走來慢慢強大從以前的vs2003能自動改亂你的html代碼到現(xiàn)在在vs2008中都能直接對html代碼進(jìn)行w3c標(biāo)準(zhǔn)驗證并提示了,非常不易。 論壇中也經(jīng)常有從事.net開發(fā)的新手朋友問一些ASP.net開發(fā)過程中與Web標(biāo)準(zhǔn)之間的沖突
DataGrid支持對DataGrid所顯示的DataTable的編輯修改,只要DataGrid的ReadOnly屬性為False,就可以在DataGrid中直接修改單元中的內(nèi)容,修改完后數(shù)據(jù)將直接反應(yīng)到此DataGrid對應(yīng)的那個DataTable的單元。
如果這個DataTable是通過vs.net的可視化數(shù)據(jù)設(shè)計器新建DataAdapter,并生成了SelectCommand、InsertCommand、UpdateCommand、DeleteCommand這四個命令,用DataAdapter的Fill方法得來的,那么事情就簡單了,修改過的DataTable你可以直接用DataAdapter的UpDate方法寫回到數(shù)據(jù)庫。下面看一下vs.net的可視數(shù)據(jù)數(shù)據(jù)器生成的InsertCommand命令:
this.sqlInsertCommand1.CommandText = @"INSERT INTO Customers(CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax)VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle,@Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax);SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone,Fax FROM Customers WHERE (CustomerID = @CustomerID)"; this.sqlInsertCommand1.Connection = this.sqlConnection2; this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CustomerID", System.Data.SqlDbType.NVarChar, 5, "CustomerID")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CompanyName", System.Data.SqlDbType.NVarChar, 40, "CompanyName")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactName", System.Data.SqlDbType.NVarChar, 30, "ContactName")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactTitle", System.Data.SqlDbType.NVarChar, 30, "ContactTitle")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Address", System.Data.SqlDbType.NVarChar, 60, "Address")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@City", System.Data.SqlDbType.NVarChar, 15, "City")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Region", System.Data.SqlDbType.NVarChar, 15, "Region")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@PostalCode", System.Data.SqlDbType.NVarChar, 10, "PostalCode")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Country", System.Data.SqlDbType.NVarChar, 15, "Country")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Phone", System.Data.SqlDbType.NVarChar, 24, "Phone")); this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Fax", System.Data.SqlDbType.NVarChar, 24, "Fax"));
DataAdapter的SelectCommand是用來DataAdapter.Fill()方法來填充DataTable的,SelectCommand選擇的數(shù)據(jù)表行集將被填充到DataTable中,然后DataGrid將它顯示出來。
DataGrid在經(jīng)過編輯修改后,其對應(yīng)的DataTable中的行就可能出現(xiàn)文章上面所述的那五種狀態(tài),可能是新加的(Added),可能是修改了的(Modified),可能是刪除的(Deleted),DataAdapter.UpDate()方法將通過調(diào)用InsertCommand命令將狀態(tài)為Added的行插入到數(shù)據(jù)庫,UpdateCommand將狀態(tài)為Modified的行在數(shù)據(jù)庫中做修改,DeleteCommand將狀態(tài)為Deleted的行在數(shù)據(jù)庫真正的刪除。
如果不是通過vs.net的可視化數(shù)據(jù)設(shè)計器新建DataAdapter,沒有自動生成SelectCommand、InsertCommand、UpdateCommand、DeleteCommand這四個命令,那么就可能需要自己寫InsertCommand、UpdateCommand、DeleteCommand命令,有一種情況就是當(dāng)SelectCommand至少返回一個主鍵列或唯一的列時,可以通過SqlCommandBuilder來自動根據(jù)SelectCommand命令來自動生成另外三個更新命令,例如:
SqlConnection myConn = new SqlConnection(myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, myConn);
//建立DataAdapter的SelectCommand命令
SqlCommandBuilder custCB = new SqlCommandBuilder(myDataAdapter);
//建立此DataAdapter的CommandBuilder,
//這樣系統(tǒng)就會給此DataAdapter自動生成
InsertCommand、UpdateCommand、DeleteCommand三個命令。
否則,要用DataAdapter.UpDate()方法更新數(shù)據(jù)庫就要自己寫InsertCommand、UpdateCommand、DeleteCommand這三個命令,可以參考上面給出的vs.net自動生成的InsertCommand命令的寫法。
◆ 數(shù)據(jù)綁定的同步
WinForm中很多控件都可以與數(shù)據(jù)源綁定,綁定又分兩種情況:
簡單數(shù)據(jù)綁定
簡單數(shù)據(jù)綁定指將一個控件綁定到單個數(shù)據(jù)元素(如數(shù)據(jù)集表的列中的值)的能力。這是用于控件,如 TextBox 控件或 Label 控件(即通常只顯示單個值的控件)的典型綁定類
分享:ASP.NET程序設(shè)計的10大技巧1. 在使用Visual Studio .NET時,除直接或非引用的對象外,不要使用缺省的名字 .NET帶來的好處之一是所有的源代碼和配置文件都是純文本文件,能夠使用Notepad或WordPad等任意的文本編輯器進(jìn)行編輯。如果不愿意,我們并非一定要使用Visual Studio .NET作為集
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- aspx是什么格式 ASPX文件怎么打開
- 將GridView內(nèi)容導(dǎo)出到Excel或Word中
- ASP.NET2.0服務(wù)器控件之創(chuàng)建復(fù)雜屬性
- ASP.NET MVC中解析淘寶網(wǎng)頁出現(xiàn)亂碼問題的解決方法
- 關(guān)于IronPython和C#執(zhí)行速度對比
- 淺談.NET 3.5 SP1中的JIT增強
- Windows CE.Net下矩陣鍵盤開發(fā)設(shè)計詳解
- 關(guān)于利用C#遠(yuǎn)程存取Access數(shù)據(jù)庫
- 解決在Web.config或App.config中添加自定義配置的方法詳解
- ASP.NET筆記之頁面跳轉(zhuǎn)、調(diào)試、form表單、viewstate、cookie的使用說明
- 相關(guān)鏈接:
- 教程說明:
.Net教程-注意ADO.NET中容易混淆的概念(4)
。