CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

VB与数据库连接不能放在模块中,请大家帮下忙,谢谢

楼主hmyang(阳阳)2006-03-09 12:04:39 在 VB / 数据库(包含打印,安装,报表) 提问

rivate   Sub   cmdOK_Click()  
  '注册新用户  
   
  Dim   cnn1   As   ADODB.Connection  
  Dim   AddUser   As   New   ADODB.Recordset  
  Dim   SqlStr   As   String  
  Dim   DBstr   As   String  
  Dim   UsrName   As   String  
  Dim   UsrPwd   As   String  
  Dim   strCnn   As   String  
   
          '与数据库连接  
          Set   cnn1   =   New   ADODB.Connection  
          strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   localhost   ;User   ID   =   sa;   &   _  
          Initial   catalog   =   wastebook   ;Password   =   ;"  
          cnn1.Open   strCnn  
   
          '与表连接  
          Set   AddUser   =   New   ADODB.Recordset  
          AddUser.CursorType   =   adOpenKeyset  
          AddUser.LockType   =   adLockOptimistic  
  ××         AddUser.Open   "UserInfo",   cnn1,   adOpenForwardOnly,   adLockOptimistic  
  End   Sub  
  以上代码通过,于是我新建了一个模块,并Public   g_Conn   As   ADODB.Connection   把g_Conn设为全局变量,在模块中  
  '建立连接  
  Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  而把上面与数据库的连接代码去掉,运行就会报错“连接无法用于执行此操作。在此上下文中它可能已经被关闭或无效。错误的是带××的那行,请大家帮忙,谢谢:)  
  问题点数:20、回复次数:30Top

1 楼hmyang(阳阳)回复于 2006-03-09 13:56:48 得分 0

没人知道吗?:(Top

2 楼ZOU_SEAFARER(颓废程序员^_^)回复于 2006-03-09 14:13:14 得分 0

Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
    放在那里都不应该错呀Top

3 楼feiyun0112(http://feiyun0112.cnblogs.com/)回复于 2006-03-09 14:13:41 得分 0

AddUser.Open   "UserInfo",   g_Conn   ,   adOpenForwardOnly,   adLockOptimisticTop

4 楼hmyang(阳阳)回复于 2006-03-09 14:19:25 得分 0

Set   AddUser   =   New   ADODB.Recordset  
        AddUser.Open   "UserInfo",   g_Conn,   adOpenForwardOnly,   adLockOptimistic  
  这句我也有的啊,不过错误好像就是在这一行Top

5 楼hmyang(阳阳)回复于 2006-03-09 14:21:06 得分 0

是不是  
  Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  要放在一个函数里面?直接放在模块里面可以吗?我对模块的概念还不是最清楚Top

6 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:29:08 得分 0

Dim   g_Conn   As   ADODB.Connection   '把Public声明改用Dim试试看  
   
  Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  Top

7 楼hmyang(阳阳)回复于 2006-03-09 14:32:51 得分 0

还是不行,我估计只是一个很简单的原则问题卡住了。。。。Top

8 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:35:43 得分 0

'添加一个Module  
  Dim   g_Conn   As   ADODB.Connection   '把Public声明改用Dim试试看  
  Sub   Main()  
  Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  End   Sub  
   
  '----下面是在Form中使用  
  Private   Sub   cmdOK_Click()  
  '注册新用户  
   
  Dim   AddUser   As   New   ADODB.Recordset  
  Dim   SqlStr   As   String  
  Dim   DBstr   As   String  
  Dim   UsrName   As   String  
  Dim   UsrPwd   As   String  
  Dim   strCnn   As   String  
   
   
          '与表连接  
          Set   AddUser   =   New   ADODB.Recordset  
          AddUser.CursorType   =   adOpenKeyset  
          AddUser.LockType   =   adLockOptimistic  
          AddUser.Open   "UserInfo",   strCnn,   adOpenForwardOnly,   adLockOptimistic  
  End   Sub  
  Top

9 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:37:25 得分 0

我感觉你的错误是出在新声明的Connection对象名为strCnn,而你原来使用的是cnn1  
   
  因此出错.   检查一下看看   .Top

10 楼hmyang(阳阳)回复于 2006-03-09 14:50:15 得分 0

AddUser.Open   "UserInfo",   strCnn,   adOpenForwardOnly,   adLockOptimistic  
  End   Sub  
   
  第二个参数为strCnn?Top

11 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:51:39 得分 0

对,这个是你打开的连接对象名称.Top

12 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:53:30 得分 0

sorry,没看清楚  
  你的Connection对象名是g_ConnTop

13 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:54:12 得分 0

不好意思,刚才看错了.  
   
  应该是这样  
    AddUser.Open   "UserInfo",     g_Conn,   adOpenForwardOnly,   adLockOptimisticTop

14 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 14:54:59 得分 0

很久没写代码了...唉.Top

15 楼hmyang(阳阳)回复于 2006-03-09 14:58:00 得分 0

我觉得g_Conn才是连接对象啊?而且设为全局可以让其它地方都用  
  strCnn是一个string,用来存储与数据库的连接方式,用户名,密码等信息  
  而且strCnn并不是全局的,只在模块中定义过,那FORM中怎么使用它呢?Top

16 楼hmyang(阳阳)回复于 2006-03-09 14:59:25 得分 0

哦,我也这么想,不过还是不行,我要晕了:(  
  今天才接触ADO,来了个下马威Top

17 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 15:04:25 得分 0

你在模块中添加以下代码  
  Dim   g_Conn   As   ADODB.Connection  
   
  Sub   Main()  
  Set   g_Conn   =   New   ADODB.Connection  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  End   Sub  
   
  然后修改工程属性,将开始对象设定为   Main()Top

18 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 15:13:39 得分 0

你的strCnn有问题  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  ........ServerName,   UserName,   DBName,   UserPwd   ??  
   
   
  用这句  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   localhost   ;User   ID   =   sa;   &   _  
          Initial   catalog   =   wastebook   ;Password   =   ;"  
   
  Top

19 楼hmyang(阳阳)回复于 2006-03-09 15:20:13 得分 0

Dim   ServerName   As   String,   DBName   As   String,   UserName   As   String,   UserPwd   As   String  
  Dim   strCnn   As   String  
   
  '数据库相关信息  
  ServerName   =   "localhost"  
  DBName   =   "wastebook"  
  UserName   =   "sa"  
  UserPwd   =   "   "  
  这是我定义的。  
  用你前面的办法试了一下,改成从sub   main开始运行,不过VB就没有响应了,我导出成exe文件,运行等了一会儿然后跳出来错误信息“运行时错误,【DBNETLIB】connectionOpen(connect())】SQL   Server不存在或拒绝访问Top

20 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 15:25:26 得分 0

.....  
   
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   "   &   ServerName   &   ";User   ID   =   "   &   UserName   &   ";Initial   catalog   =   "   &   DBName   &   ";Password   =   "   &   UserPwd   &   ";"  
  Top

21 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 15:26:48 得分 0

你的strCnn组成不正确,ServerName,   UserName,   DBName,   UserPwd   这四个都是变量,需要用上面那种方式连接才可以。Top

22 楼hmyang(阳阳)回复于 2006-03-09 15:31:07 得分 0

&这个符号在这里的作用是?。。。  
  好像还是不行Top

23 楼Cooly(☆不做开发很久了......☆)回复于 2006-03-09 15:35:28 得分 20

&是字符串连接符,   这样吧,你把工程文件打包发给我一份,我帮你看看.  
   
  johnnylill@126.comTop

24 楼hmyang(阳阳)回复于 2006-03-09 15:43:52 得分 0

好的,谢谢,实在是麻烦你了,稍等Top

25 楼hmyang(阳阳)回复于 2006-03-09 15:52:16 得分 0

发好了,谢谢Top

26 楼hmyang(阳阳)回复于 2006-03-09 19:30:12 得分 0

好了,真是太谢谢了:)Top

27 楼mccartney_xu((一切都变了,还能回到从前吗?))回复于 2006-03-10 09:45:58 得分 0

是不是因为你NEW了两次啊?!Top

28 楼Nowish(看我能忍耐多久)回复于 2006-03-10 11:54:48 得分 0

Public   g_Conn   As   new   ADODB.Connection    
  'Set   g_Conn   =   New   ADODB.Connection   '不要这句  
  strCnn   =   "Provider   =   SQLOLEDB;   Data   Source   =   ServerName   ;User   ID   =   UserName;"   &   _  
  "Initial   catalog   =   DBName   ;Password   =   UserPwd;   "  
  g_Conn.Open   strCnn  
  Top

29 楼boblaile(爱在13月32)回复于 2006-03-10 12:49:26 得分 0

cnn1   .close  
  是不是没有关闭连接  
  以后的连接就出错了Top

30 楼bbbbcccc()回复于 2006-03-10 16:46:10 得分 0

http://valenhua.go3.icpcn.com/Top

相关问题

  • VB$数据库
  • vb数据库!
  • VB与数据库
  • vb+access 数据库
  • 可否将ADO连接SQL数据库的语句写成函数,放在模块里,然后每次进行数据库操作时调用?
  • 创建数据库及表模块
  • [Python]数据库模块的问题
  • VB数据库问题
  • 救命啊!VB数据库
  • vb数据库中的max()??!!

关键词

  • 模块
  • 数据库
  • 连接
  • stringdim
  • strcnn
  • adduser
  • cnn1
  • conn
  • open
  • new adodb

得分解答快速导航

  • 帖主:hmyang
  • Cooly

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo