转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
ADO 在informix的 Addnew         ★★★★

ADO 在informix的 Addnew

作者:闵涛 文章来源:闵涛的学习笔记 点击数:981 更新时间:2009/4/23 14:58:00

ADO在informix的Addnew来源:cww
  在RDO时,我曾指出当Resultset.Addnew之後,目前的Resultset不会包含现在新增的这一笔,这是一个比较不好的现象(这在SQL SERVER中不会),试想,如果我们在Table中使用Serial型态的栏位(该Field的值会在每新增一笔资料时自动加一),而我们拿这个栏位的值当作流水来使用,而我们使用.AddNew之後,却因为Resultset没有包含该笔资料,所以我们就没有办法得知该Serial栏位的值。这时可能得产生一个unique的Key,而後再由资料库中取得该笔Record。

  但在ADO中,出乎意料之外的,它维护得不错,在AddNew之後,Current Record会停在Addnew的那一笔,而不是Addnew前的那一笔,这表示该笔资料已在Resultset之中了!不过如果要使用Serial的栏位,还得在AddNew之後再下一个Resync的Method把值传回来,这个原因在於,我们Informix使用的Cursor是在Client端(我上一篇文章中有说过,OpenLink的Multi-Tier ODBC Driver for Informix7.2,使用Server端的Cursor会有问题),而Serical栏位的值是Informix Server给的,所以在Update之後Serial栏位的值必定要由Server中再取出才知道,因此使用Resync方法来做。不过这里仍有一件事要提出,如果有Transaction的情况之下,.AddNew / .Update之後,如果Rollback,该笔Data仍会在Client端存在,而且也会占用Serical栏位的一个号码,这也还好啦,只要知道这个情况我们程式设计时注意一下便好了。  

Option Explicit

Dim WithEvents cn As ADODB.Connection
Private WithEvents rs As ADODB.Recordset
Private qry As ADODB.Command
Private adoerr As ADODB.Errors


Private Sub Command2_Click()
rs.AddNew
rs!case_no = "1105"
rs!fld2 = "v"
rs.Update
rs.Resync adAffectCurrent 如果该Resultset中有Serical栏位,
 目的在取得Serical的栏位的值
rs.MoveFirst
Do While Not rs.EOF
 Debug.Print rs!case_no, rs!myseri
 rs.MoveNext
Loop
End Sub

Private Sub Form_Load()
Dim connstr As String
Dim ans As Integer, errstr As String, sql As String
Set cn = New ADODB.Connection
connstr = "UID=cww;PWD=jjh5612;Database=cwwpf@eis;" _
 + "Driver={OpenLink Generic 32 Bit Driver};" _
 + "Host=192.168.0.61;" _
 + ";FetchBufferSize=30" _
 + ";NoLoginBox=Yes" _
 + ";Options=" _
 +   Protocol=TCP/IP" _
 + ";ReadOnly=No" _
 + ";ServerOptions=" _
 + ";ServerType=Informix 7.2"
cn.ConnectionString = connstr
cn.Open

sql = "Select * from testab2 order by case_no"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.CursorLocation = adUseClient
rs.Source = sql
rs.CacheSize = 30
rs.Open , cn, adOpenKeyset, adLockOptimistic, adCmdText
End Sub


[VB.NET程序]ADO 的测试  [VB.NET程序]ADO 揭密 1
[Web开发][ADO]如何修改ADO的线程模型  [Web开发]Delphi7下仿Ado.Net类的实现
[Web开发]通过COM使用ADO  [Web开发]ADO & ADO.NET中使用存储过程的两个共用的函数
[Web开发]Binding a DataGrid to an ADO Recordset  [Web开发]ADOCE for ADO Programmers
[Web开发]Delphi多线程下的ADO编程  [Web开发]在delphi.net的VCL.net里使用Ado.net
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台