荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jek (Super Like Cat), 信区: DotNET
标  题: 实战Visual C#数据库编程(上)
发信站: 荔园晨风BBS站 (Thu Feb 28 16:07:09 2002), 转信

实战Visual C#数据库编程(上)

作者:yesky·马金虎
2002-2-27 21:50:33

[被查看:103次]    (推荐作品)

------------------------------------------------------------------------
--------


  [编者的话:]关于数据库编程,微软提供了一个统一的数据对象访问模型,
在Visual Studio6.0中称为ADO,在.NET中则统一为ADO.NET,掌握ADO.NET就等于掌
握了数据库编程的核心,因此有必要首先复习一下以前发表的《ADO.NET完全攻略
》。

  针对数据库编程始终是程序设计语言的一个重要方面的内容,也是一个难点。
数据库编程的内容十分丰富,但最为基本编程的也就是那么几点,譬如:连接数据
库、得到需要的数据和针对数据记录的浏览、删除、修改、插入等操作。其中又以
后面针对数据记录的数据操作为重点。本文就来着重探讨一下Visual C#数据库基
本编程,即:如何浏览记录、修改记录、删除记录和插入记录。

  一.程序设计和运行的环境设置:

  (1).视窗2000服务器版

  (2).Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )

  (3)..Net FrameWork SDK Beta 2

  为了更清楚的说明问题,在数据库的选用上,采用了当前比较典型的数据库,
一个是本地数据库Access 2000,另外一个是远程数据库Sql Server 2000。其中本
地数据库名称为"db.mdb",在其中定义了一张数据表"person","person"表的数据
结构如下表:

字段名称 字段类型  字段意思
id  数字 序号
xm 文本 姓名
xb  文本 性别
nl  文本  年龄
zip 文本 邮政编码

  远程数据库Sql Server 2000的数据库服务器名称为"Server1",数据库名称为
"Data1",登陆的ID为"sa",口令为空,在数据库也定义了一张"person"表,数据
结构如上表。
  二.如何浏览数据:

  在《Visual C#的数据绑定》中,已经了解了如何把数据集中的某些字段绑定
到WinForm组件的某个属性上,这样程序员就可以根据以WinForm组件的来定制数据
显示的形式,并且此时的WinForm组件显示内容就可以随着记录指针的变化而改变
。至此可见,浏览数据记录的关键就是如何改变记录指针。要实现这种操作,就要
使用到BindingManagerBase类,此类的主要作用是管理对于那些实现了对同一个数
据源进行绑定的对象。说的具体些,就是能够使得Windows窗体上的已经对同一数
据源进行数据绑定的组件保持同步。在BindingManagerBase类中定义了一个属性
"Position",通过这个属性就可以改变BindingManagerBase对象中的数据指针。创
建BindingManagerBase对象必须要使用到BindingContext类,其实每一个由
Control类中继承而得到的对象,都有单一的BindingContext对象,在大多数创建
窗体中实现数据绑定组件的BindingManagerBase对象是使用Form类的
BindingContext来得到。下列代码是以Access 2000数据库为模型,创建的一个名
称为"myBind"的BindingManagerBase对象。

//创建一个 OleDbConnection
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =
db.mdb" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;

myConn.Open ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;

file://把Dataset绑定books数据表
myCommand.Fill ( myDataSet , "person" ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
myBind = this.BindingContext [ myDataSet , "person" ] ;

  下列代码是以Sql Server 2000数据库为模型,创建一个名称为"myBind"的
BindingManagerBase对象。

// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称
为server1,数据库为data1
string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ;
 User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;

file://把Dataset绑定person数据表
myCommand.Fill ( myDataSet , " person " ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
myBind = this.BindingContext [ myDataSet , "person" ] ;

  得到了是同一数据源的BindingManagerBase对象,通过改变此对象的
"Position"属性值,这样绑定数据的组件显示的数据就随之变化,从而实现导航数
据记录。

  < I > .导航按钮"上一条"实现方法:

protected void GoPrevious ( object sender , System.EventArgs e )
{
if ( myBind.Position == 0 )
MessageBox.Show ( "已经到了第一条记录!" , "信息提示!" ,
MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position -= 1 ;
}

  < II > . 导航按钮"下一条"实现方法:

protected void GoNext ( object sender , System.EventArgs e )
{
if ( myBind.Position == myBind.Count -1 )
MessageBox.Show ( "已经到了最后一条记录!", "信息提示!" ,
MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position += 1 ;
}

  < III > . 导航按钮"至尾"实现方法:

protected void GoLast ( object sender , System.EventArgs e )
{
myBind.Position = myBind.Count - 1 ;
}
< IV > . 导航按钮"至首"实现方法:
protected void GoFirst ( object sender , System.EventArgs e )
{
myBind.Position = 0 ;
}

  注释:"Count"是BindingManagerBase对象的另外一个重要的属性,是数据集
记录的总数。

本帖子版权属于原作者所有,转载请与原作者联系并注明出处 - DotNET中文技术




--
 === I love Puss forever ===

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.241]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店