VisualC数据库access编程Word文档下载推荐.docx
《VisualC数据库access编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VisualC数据库access编程Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
![VisualC数据库access编程Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/15/89b7cd98-9df7-4158-af64-5df076f43347/89b7cd98-9df7-4158-af64-5df076f433471.gif)
,在其中定义了一张数据表"
person"
,"
表的数据结构如下表:
字段名称
字段类型
字段意思
id
数字
序号
xm
文本
姓名
xb
性别
nl
文本
年龄
zip
邮政编码
远程数据库SqlServer2000的数据库服务器名称为"
Server1"
数据库名称为"
Data1"
,登陆的ID为"
sa"
,口令为空,在数据库也定义了一张"
表,数据结构如上表。
二.如何浏览数据:
在《VisualC#的数据绑定》中,已经了解了如何把数据集中的某些字段绑定到WinForm组件的某个属性上,这样程序员就可以根据以WinForm组件的来定制数据显示的形式,并且此时的WinForm组件显示内容就可以随着记录指针的变化而改变。
至此可见,浏览数据记录的关键就是如何改变记录指针。
要实现这种操作,就要使用到BindingManagerBase类,此类的主要作用是管理对于那些实现了对同一个数据源进行绑定的对象。
说的具体些,就是能够使得Windows窗体上的已经对同一数据源进行数据绑定的组件保持同步。
在BindingManagerBase类中定义了一个属性"
Position"
,通过这个属性就可以改变BindingManagerBase对象中的数据指针。
创建BindingManagerBase对象必须要使用到BindingContext类,其实每一个由Control类中继承而得到的对象,都有单一的BindingContext对象,在大多数创建窗体中实现数据绑定组件的BindingManagerBase对象是使用Form类的BindingContext来得到。
下列代码是以Access2000数据库为模型,创建的一个名称为"
myBind"
的BindingManagerBase对象。
//创建一个OleDbConnection
stringstrCon="
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=db.mdb"
;
OleDbConnectionmyConn=newOleDbConnection(strCon);
stringstrCom="
SELECT*FROMperson"
file:
//创建一个DataSet
myDataSet=newDataSet();
myConn.Open();
//用OleDbDataAdapter得到一个数据集
OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);
//把Dataset绑定books数据表
myCommand.Fill(myDataSet,"
);
//关闭此OleDbConnection
myConn.Close();
myBind=this.BindingContext[myDataSet,"
];
下列代码是以SqlServer2000数据库为模型,创建一个名称为"
//设定数据连接字符串,此字符串的意思是打开Sqlserver数据库,服务器名称为server1,数据库为data1
Provider=SQLOLEDB.1;
PersistSecurityInfo=False;
UserID=sa;
InitialCatalog=data1;
DataSource=server1"
//把Dataset绑定person数据表
person"
得到了是同一数据源的BindingManagerBase对象,通过改变此对象的"
属性值,这样绑定数据的组件显示的数据就随之变化,从而实现导航数据记录。
<
I>
.导航按钮"
上一条"
实现方法:
protectedvoidGoPrevious(objectsender,System.EventArgse)
{
if(myBind.Position==0)
MessageBox.Show("
已经到了第一条记录!
"
"
信息提示!
MessageBoxButtons.OK,MessageBoxIcon.Information);
else
myBind.Position-=1;
}
II>
.导航按钮"
下一条"
protectedvoidGoNext(objectsender,System.EventArgse)
if(myBind.Position==myBind.Count-1)
已经到了最后一条记录!
"
myBind.Position+=1;
III>
至尾"
protectedvoidGoLast(objectsender,System.EventArgse)
myBind.Position=myBind.Count-1;
<
IV>
至首"
protectedvoidGoFirst(objectsender,System.EventArgse)
myBind.Position=0;
注释:
Count"
是BindingManagerBase对象的另外一个重要的属性,是数据集记录的总数。
三.实现删除记录:
在对数据记录进行操作的时候,有二点必须十分清晰:
其一:
在对数据记录进行操作的时候,我想有一些程序员一定有这样一个疑惑,当对数据库服务器请求数据集的时候,就会产生"
DataSet"
对象,用以管理数据集,这样如果这些对数据库服务器的请求非常多,同样也就会产生很多的"
对象,达到一定时候必然会使得数据库服务器崩溃。
这种想法是自然的,但和实际并不相符,因为"
对象并不是在服务器端产生的,而是在客户端产生的。
所以面对众多的数据请求的时候对数据库服务器的影响并不十分太大。
其二:
记得在用Delphi编写三层数据模型的时候的,每一次对数据库的修改其实只是对第二层产生的数据集的修改,要真正修改数据库,还必须调用一个另外的方法。
在用ADO.NET处理数据库的时候,虽然处理的直接对象是数据库,但此时"
对象中的内容并没有随之改变,而绑定的数据组件显示的数据又来源于"
对象,这样就会产生一个错觉,就是修改了的记录并没有修改掉,删除的记录并没有删除掉。
所以对数据记录进行操作的时候,在修改数据库后,还要对"
对象进行必要的修改,这样才能保证"
对象和数据库内容一致、同步。
下面代码是删除当前绑定组件显示的记录的程序代码,此代码是以Access2000数据库为模板的:
protectedvoidDelete_record(objectsender,System.EventArgse)
{
DialogResultr=MessageBox.Show("
是否删除当前记录!
删除当前记录!
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
intss=(int)r;
if(ss==6)//按动"
确定"
按钮
try{
//连接到一个数据库
DataSource=db.mdb"
stringstrDele="
DELETEFROMpersonWHEREid="
+t_id.Text;
OleDbCommandmyCommand=newOleDbCommand(strDele,myConn);
//从数据库中删除指定记录
myCommand.ExecuteNonQuery();
//从DataSet中删除指定记录
myDataSet.Tables["
].Rows[myBind.Position].Delete();
].AcceptChanges();
catch(Exceptioned)
删除