strCom quot SELECT FROM person quot file://创建一个 DataSetmyDataSet new DataSet file://用 OleDbDataAdapter 得到一个数据集OleDbDataAdapter myCommand new OleDbDataAdapter strCom myConn file://把 Dataset 绑定 person 数据表myCommand.Fill myDataSet quot person quot file://关闭此 OleDbConnectionmyConn.Close myBind this.BindingContext myDataSet quotpersonquot 得到了是同一数据源的 BindingManagerBase 对象,通过改变此对象的quotPositionquot属性值,这样绑定数据的组件显示的数据就随之变化,从而实现导航数据记录。
lt I gt .导航按钮quot上一条quot实现方法:protected void GoPrevious object sender System.EventArgs e if myBind.Position 0 MessageBox.Show quot已经到了第一条记录!quot quot信息提示!quot MessageBoxButtons.OK MessageBoxIcon.Information elsemyBind.Position - 1 lt II gt . 导航按钮quot下一条quot实现方法:protected void GoNext object sender System.EventArgs e if myBind.Position myBind.Count -1 quot quotMessageBox.Show quot已经到了最后一条记录! quot信息提示! MessageBoxButtons.OK MessageBoxIcon.Information elsemyBind.Position 1 lt III gt . 导航按钮quot至尾quot实现方法:protected void GoLast object sender System.EventArgs e myBind.Position myBind.Count - 1 lt IV gt . 导航按钮quot至首quot实现方法:protected void GoFirst object sender System.EventArgs e myBind.Position 0 注释:quotCountquot是 BindingManagerBase 对象的另外一个重要的属性,是数据集记录的总数。
实战 Visual C#数据库编程(中) www.CSharpCN.com 3/29/2003 CCN三.实现删除记录: lt/PgtltPgt 在对数据记录进行操作的时候,有二点必须十分清晰:lt/PgtltPgt 其一:在对数据记录进行操作的时候,我想有一些程序员一定有这样一个疑惑,当对数据库服务器请求数据集的时候,就会产生quotDataSetquot对象,用以管理数据集,这样如果这些对数据库服务器的请求非常多,同样也就会产生很多的quotDataSetquot对象,达到一定时候必然会使得数据库服务器崩溃。
这种想法是自然的,但和实际并不相符,因为quotDataSetquot对象并不是在服务器端产生的,而是在客户端产生的。
所以面对众多的数据请求的时候对数据库服务器的影响并不十分太大。
lt/PgtltPgt 其二:记得在用 Delphi编写三层数据模型的时候的,每一次对数据库的修改其实只是对第二层产生的数据集的修改,要真正修改数据库,还必须调用一个另外的方法。
在用 ADO.NET 处理数据库的时候,虽然处理的直接对象是数据库,但此时quotDataSetquot对象中的内容并没有随之改变,而绑定的数据组件显示的数据又来源于quotDataSetquot对象,这样就会产生一个错觉,就是修改了的记录并没有修改掉,删除的记录并没有删除掉。
所以对数据记录进行操作的时候,在修改数据库后,还要对quotDataSetquot对象进行必要的修改,这样才能保证quotDataSetquot对象和数据库内容一致、同步。
下面代码是删除当前绑定组件显示的记录的程序代码,此代码是以 Access 2000 数据库为模板的: lt/PgtltPgtprotected void Delete_record object sender System.EventArgs e DialogResult r MessageBox.Show quot是否删除当前记录!quot quot删除当前记录!quot MessageBoxButtons.YesNo MessageBoxIcon.Question int ss int r if ss 6 // 按动quot确定quot按钮tryfile://连接到一个数据库string strCon quot Provider Microsoft.Jet.OLEDB.4.0 Data Source db.mdb quot OleDbConnection myConn new OleDbConnection strCon myConn.Open string strDele quotDELETE FROM person WHERE id quot t_id.Text OleDbCommand myCommand new OleDbCommand strDele myConn file://从数据库中删除指定记录myCommand.ExecuteNonQuery file://从 DataSet 中删除指定记录myDataSet.Tables