荔园在线

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

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


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

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

作者:yesky·马金虎
2002-2-27 21:51:40

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

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


  三.实现删除记录:

  在对数据记录进行操作的时候,有二点必须十分清晰:

  其一:在对数据记录进行操作的时候,我想有一些程序员一定有这样一个疑惑
,当对数据库服务器请求数据集的时候,就会产生"DataSet"对象,用以管理数据
集,这样如果这些对数据库服务器的请求非常多,同样也就会产生很多的
"DataSet"对象,达到一定时候必然会使得数据库服务器崩溃。这种想法是自然的
,但和实际并不相符,因为"DataSet"对象并不是在服务器端产生的,而是在客户
端产生的。所以面对众多的数据请求的时候对数据库服务器的影响并不十分太大。


  其二:记得在用Delphi编写三层数据模型的时候的,每一次对数据库的修改其
实只是对第二层产生的数据集的修改,要真正修改数据库,还必须调用一个另外的
方法。在用ADO.NET处理数据库的时候,虽然处理的直接对象是数据库,但此时
"DataSet"对象中的内容并没有随之改变,而绑定的数据组件显示的数据又来源于
"DataSet"对象,这样就会产生一个错觉,就是修改了的记录并没有修改掉,删除
的记录并没有删除掉。所以对数据记录进行操作的时候,在修改数据库后,还要对
"DataSet"对象进行必要的修改,这样才能保证"DataSet"对象和数据库内容一致、
同步。下面代码是删除当前绑定组件显示的记录的程序代码,此代码是以Access
2000数据库为模板的:

protected void Delete_record ( object sender , System.EventArgs e )
{
DialogResult r = MessageBox.Show ( "是否删除当前记录!" , "删除当前记录
!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;
int ss = ( int ) r ;
  if ( ss == 6 ) // 按动"确定"按钮
{
try{
file://连接到一个数据库
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =
db.mdb " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
string strDele = "DELETE FROM person WHERE id= " + t_id.Text ;
OleDbCommand myCommand = new OleDbCommand ( strDele , myConn ) ;
file://从数据库中删除指定记录
myCommand.ExecuteNonQuery ( ) ;
file://从DataSet中删除指定记录
myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . Delete ( ) ;

myDataSet.Tables [ "person" ] . AcceptChanges ( ) ;
myConn.Close ( ) ;
}
catch ( Exception ed )
{
MessageBox.Show ( "删除记录错误信息: " + ed.ToString ( ) , "错误!" )
;
}
}
}

  下面代码是删除当前绑定组件显示的记录的程序代码,此代码是以Sql Server
 2000数据库为模板的,二者的区别仅仅在于数据链接:

protected void Delete_record ( object sender , System.EventArgs e )
{
DialogResult r = MessageBox.Show ( "是否删除当前记录!" , "删除当前记录
!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;
int ss = ( int ) r ;
  if ( ss == 6 ) // 按动"确定"按钮
{
try{
// 设定数据连接字符串,意思是打开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 strDele = "DELETE FROM person WHERE id= " + t_id.Text ;
OleDbCommand myCommand = new OleDbCommand ( strDele , myConn ) ;
file://从数据库中删除指定记录
myCommand.ExecuteNonQuery ( ) ;
file://从DataSet中删除指定记录
myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . Delete ( ) ;

myDataSet.Tables [ "person" ] . AcceptChanges ( ) ;
myConn.Close ( ) ;
}
catch ( Exception ed )
{
MessageBox.Show ( "删除记录错误信息: " + ed.ToString ( ) , "错误!" )
;
}
}
}

  在这二段代码中,在更改数据库的同时也对"DatsSet"对象进行了必要的修改

下图是程序中对数据记录进行删除操作的运行界面:


     图01:删除记录
  四.插入数据记录:

  对数据库进行插入记录操作和删除记录操作基本的思路是一致的,就是通过
ADO.NET首先插入数据记录到数据库,然后对"DataSet"对象进行必要的修改。下列
代码就是以Access 2000数据库为模型修改当前记录的代码:

protected void Update_record ( object sender , System.EventArgs e )
{
int i = myBind.Position ;
try{
file://连接到一个数据库
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =
db.mdb " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . BeginEdit ( )
 ;
file://从数据库中修改指定记录
string strUpdt = " UPDATE person SET xm = '"
+ t_xm.Text + "' , xb = '"
+ t_xb.Text + "' , nl = "
+ t_nl.Text + " , zip = "
+ t_books.Text + " WHERE id = " + t_id.Text ;
OleDbCommand myCommand = new OleDbCommand ( strUpdt , myConn ) ;
myCommand.ExecuteNonQuery ( ) ;
myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . EndEdit ( )
;
myDataSet.Tables [ "person" ] . AcceptChanges ( ) ;
myConn.Close ( ) ;
}
catch ( Exception ed )
{
MessageBox.Show ( "修改指定记录错误: " + ed.ToString ( ) , "错误!" ) ;

}
myBind.Position = i ;
}

  由于对Sql Server 2000数据记录修改操作和Access 2000数据记录修改操作的
差异只在于不同的数据链接,具体的代码可以参考"删除数据记录"中的代码,在这
里就不提供了。

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




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

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


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

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