ADO.NET时间戳使用
出处http://support.microsoft.com/zh-cn/kb/317095
概要
创建 SQL Server 表
若要创建测试表,并插入一些测试记录,请使用下面的脚本:CREATE TABLE [tblQ317095] ( [ID] int IDENTITY (1,1) NOT NULL, [CharData] varchar (10) NOT NULL, [TimeStampCol] timestamp NULL) ALTER TABLE [tblQ317095] WITH NOCHECK ADD CONSTRAINT [PK_tblQ317095] PRIMARY KEY ([ID]) INSERT INTO tblQ317095 ([CharData]) VALUES (‘AAA‘) INSERT INTO tblQ317095 ([CharData]) VALUES (‘BBB‘) INSERT INTO tblQ317095 ([CharData]) VALUES (‘CCC‘)
创建 Visual C#.NET 应用程序
- 创建一个新 Visual C#.NET Windows 应用程序。
- 从工具箱中的Windows 窗体选项卡,向窗体添加下列控件:
- 将一个按钮控件添加为cmdUpdate。
- txtID、 以及 txtCharData,txtTimeStamp 添加三个 文本框 控件。(设 txtID 和 txtTimeStamp 为 只读,以显示这些字段不能被更新)。
- 添加一个DataGrid控件。
- 系统 和 System.Data.SqlClient 命名空间上使用 using 语句,以使您无需限定在以后在代码中的这些命名空间中声明。下面的代码添加到 Form1 的通用声明部分:
using System.Data; using System.Data.SqlClient;
- 向该类中添加以下声明:
SqlConnection con = new SqlConnection(); SqlDataAdapter da; DataSet ds = new DataSet(); SqlCommand daUpdateCommand; DataTable dt;
- 将下面的代码添加到Form_Load事件:
con.ConnectionString = "Server=(local);Database=pubs;Trusted_Connection=yes;"; con.Open(); da = new SqlDataAdapter("SELECT * FROM tblQ317095 ORDER BY ID", con); daUpdateCommand = new SqlCommand("UPDATE tblQ317095 SET CharData = @pCharData WHERE TimeStampCol = @pTimeStamp",da.SelectCommand.Connection); //This is the field that you are updating. daUpdateCommand.Parameters.Add(new SqlParameter("@pCharData", SqlDbType.VarChar, 10)); daUpdateCommand.Parameters["@pCharData"].SourceVersion = DataRowVersion.Current; daUpdateCommand.Parameters["@pCharData"].SourceColumn = "CharData"; //Use the TimeStamp to locate your row. daUpdateCommand.Parameters.Add(new SqlParameter("@pTimeStamp", SqlDbType.Binary)); daUpdateCommand.Parameters["@pTimeStamp"].SourceVersion=DataRowVersion.Original; daUpdateCommand.Parameters["@pTimeStamp"].SourceColumn = "TimeStampCol"; da.UpdateCommand = daUpdateCommand; //Fetch the data. da.FillSchema(ds, SchemaType.Source, "tblQ317095"); da.Fill(ds, "tblQ317095"); dt=ds.Tables["tblQ317095"]; //Show the data in the textboxes. txtID.Text = dt.Rows[0][0].ToString() ; txtCharData.Text =dt.Rows[0][1].ToString() ; txtTimeStamp.Text= dt.Rows[0][2].ToString();
- 修改 (在步骤 5 中的代码的第一行) 中的连接字符串属性对应于您的 SQL Server 连接信息。请确保您连接到数据库运行的 SQL 脚本,以创建测试表。
- 将下面的代码添加到cmdUpdate_Click事件:
dt.Rows[0]["CharData"] = txtCharData.Text; try { da.Update(dt); MessageBox.Show("Update was successful"); } catch (System.Data.DBConcurrencyException dbException) { MessageBox.Show(dbException.Message.ToString()); DataSet DsModified; DsModified = ds.GetChanges(DataRowState.Modified); dataGrid1.DataSource = DsModified.Tables[0]; dataGrid1.CaptionText = "Modified Rows"; ds.RejectChanges(); } catch (Exception genException) { MessageBox.Show(genException.Message); } con.Close();
C#.NET 应用程序进行测试
- 运行应用程序 (在Form_Load事件中提取数据),请在调试菜单上单击开始。
- 在查询分析器 (或企业管理器),更新为新值的记录 #1 中的CharData字段。
- 返回到应用程序并将CharData更改为一个不同的值。
- 单击窗体上的按钮。请注意您会收到一个异常。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。