CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

数据库操作模块化的问题

楼主tyuthuhu(太阳照在屁股上)2005-05-14 09:33:47 在 VB / 数据库(包含打印,安装,报表) 提问

我在程序中用一个模块函数exeSQL(sql   as   string)   as   ADODB.Recordset   来执行sql语句  
   
  dim   cn   as   new   ADODB.Connection  
  Public   rs   As   New   ADODB.Recordset  
  窗体加载时:  
  cn.Open   "provider=microsoft.jet.oledb.4.0;data   source=F:\登陆器\服务器\Use_pass.mdb",   ,   ,   -1  
  程序中:  
  SQL   =   "select   *   from   登陆   where   用户名='"   &   strUserName   &   "'"  
  Set   rs   =   exeSQL(SQL)  
  If   rs.EOF   And   rs.BOF   =   True   Then       '在该句时出错,提示对象关闭操作不允许,rs.state=0  
  ........ 问题点数:40、回复次数:8Top

1 楼VichyV(薇姿)回复于 2005-05-14 10:19:26 得分 0

本来简单的数据库连接,为什么要搞得这么复杂,搞不懂Top

2 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 10:51:03 得分 0

因为我在程序中多次用sql调用数据库,反复写同一段代码太累了,并且我想以后再开发数据库时涉及sql语句时我就可以直接将模块拷过来,不用再写了.Top

3 楼VichyV(薇姿)回复于 2005-05-14 11:01:02 得分 40

Function   ConnDataBase(sql   As   String,   rs   As   ADODB.Recordset)  
   
        Dim   conn   As   New   ADODB.Connection  
   
      conn.Open   "provider=Microsoft.Jet.OLEDB.4.0;   data   source="   &   App.Path   &   "\data\database.mdb"  
   
      rs.Open   sql,   conn,   3,   3  
  End   Function  
  这样不行吗??Top

4 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:01:04 得分 0

小弟我把这个程序调通了,就是把cn.open也放入exesql()模块函数中!  
  现在不明白,为什么之前会出现这个错误?  
  请教高手Top

5 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:06:41 得分 0

维西哥的方法只是用select语句的情况,其它不返回值的情况,比如插入,删除,我做的模块是:  
  Public   Function   exeSQL(ByVal   SQL   As   String)   As   ADODB.Recordset     '使用SQL语句查询数据库  
        On   Error   GoTo   ErrHandler  
        Debug.Print   SQL  
        Dim   rst   As   New   ADODB.Recordset  
        Dim   strArray()   As   String  
        Dim   cn   As   New   ADODB.Connection  
         
        Set   rst   =   New   ADODB.Recordset  
        strArray   =   Split(Trim(SQL))  
        cn.Open   "provider=microsoft.jet.oledb.4.0;data   source=F:\登陆器\服务器\Use_pass.mdb",   ,   ,   -1  
        If   StrComp(strArray(0),   "select",   vbTextCompare)   =   0   Then  
              rst.Open   SQL,   cn,   1,   3  
              Set   exeSQL   =   rst  
        Else  
              cn.Execute   SQL  
               
        End   If  
  exeSQL_Exit:  
      Set   rs   =   Nothing  
      Set   cn   =   Nothing  
         
        Exit   Function  
  ErrHandler:  
        MsgBox   "错误号:"   &   Err.Number   &   "错误信息:"   &   Err.Description,   vbExclamation  
        Resume   exeSQL_Exit  
  End   Function  
  Top

6 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 11:11:20 得分 0

希望大家能多提意见,还有还是那个错误不知道怎么产生的,原来错误的程序中cn.open不在模块里,还有模块函数结束时没有set   cn=nothing,模块中的cn都用的是form1.cn,小弟求教了Top

7 楼therockdelt(Dm和弦)回复于 2005-05-14 15:12:16 得分 0

路过   来看看Top

8 楼tyuthuhu(太阳照在屁股上)回复于 2005-05-14 18:50:32 得分 0

如果没有什么意见的话,3天后结贴,欢迎高手进来,指点小弟的程序,能做出一个完善的VB数据库操作的模块Top

相关问题

  • 数据库操作
  • 数据库操作
  • 数据库操作
  • vc操作access数据库
  • 关于数据库操作
  • 数据库并发操作!
  • 简单数据库操作
  • 对数据库的操作
  • 数据库操作问题
  • 数据库操作问题?

关键词

  • 模块
  • 数据库
  • 语句
  • 函数
  • source
  • microsoft
  • sql
  • exesql
  • 程序
  • recordset

得分解答快速导航

  • 帖主:tyuthuhu
  • VichyV

相关链接

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

广告也精彩

反馈

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