注意ADO.NET中容易混淆的概念(4)_.Net教程
推荐:解析asp.net开发与web标准的冲突问题Visual Studio .net从2003到现在的2008,一路走来慢慢强大从以前的vs2003能自动改乱你的html代码到现在在vs2008中都能直接对html代码进行w3c标准验证并提示了,非常不易。 论坛中也经常有从事.net开发的新手朋友问一些ASP.net开发过程中与Web标准之间的冲突
DataGrid支持对DataGrid所显示的DataTable的编辑修改,只要DataGrid的ReadOnly属性为False,就可以在DataGrid中直接修改单元中的内容,修改完后数据将直接反应到此DataGrid对应的那个DataTable的单元。
如果这个DataTable是通过vs.net的可视化数据设计器新建DataAdapter,并生成了SelectCommand、InsertCommand、UpdateCommand、DeleteCommand这四个命令,用DataAdapter的Fill方法得来的,那么事情就简单了,修改过的DataTable你可以直接用DataAdapter的UpDate方法写回到数据库。下面看一下vs.net的可视数据数据器生成的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选择的数据表行集将被填充到DataTable中,然后DataGrid将它显示出来。
DataGrid在经过编辑修改后,其对应的DataTable中的行就可能出现文章上面所述的那五种状态,可能是新加的(Added),可能是修改了的(Modified),可能是删除的(Deleted),DataAdapter.UpDate()方法将通过调用InsertCommand命令将状态为Added的行插入到数据库,UpdateCommand将状态为Modified的行在数据库中做修改,DeleteCommand将状态为Deleted的行在数据库真正的删除。
如果不是通过vs.net的可视化数据设计器新建DataAdapter,没有自动生成SelectCommand、InsertCommand、UpdateCommand、DeleteCommand这四个命令,那么就可能需要自己写InsertCommand、UpdateCommand、DeleteCommand命令,有一种情况就是当SelectCommand至少返回一个主键列或唯一的列时,可以通过SqlCommandBuilder来自动根据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,
//这样系统就会给此DataAdapter自动生成
InsertCommand、UpdateCommand、DeleteCommand三个命令。
否则,要用DataAdapter.UpDate()方法更新数据库就要自己写InsertCommand、UpdateCommand、DeleteCommand这三个命令,可以参考上面给出的vs.net自动生成的InsertCommand命令的写法。
◆ 数据绑定的同步
WinForm中很多控件都可以与数据源绑定,绑定又分两种情况:
简单数据绑定
简单数据绑定指将一个控件绑定到单个数据元素(如数据集表的列中的值)的能力。这是用于控件,如 TextBox 控件或 Label 控件(即通常只显示单个值的控件)的典型绑定类
分享:ASP.NET程序设计的10大技巧1. 在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字 .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用Visual Studio .NET作为集
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-注意ADO.NET中容易混淆的概念(4)。