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

vb不用ODBC,能否使用sql server作后台数据库?

楼主linghuxiaochong(B&N)2002-12-06 18:13:38 在 VB / 数据库(包含打印,安装,报表) 提问

vb不用ODBC,能否使用sql   server作后台数据库?  
  如何使vb   能像asp那样,用连接串连接不同的数据库类型,而不用在   控制面板   中设置odbc数据源,请给出方法和关键代码  
  问题点数:100、回复次数:14Top

1 楼XLYT(雨田)回复于 2002-12-06 18:46:21 得分 5

在窗体中放一个ADO数据控件,然后设置其属性(用OLEDB连接),再把连接属性复制出来就可以了。Top

2 楼wuhee_snowwolf(雪狼)回复于 2002-12-06 18:53:37 得分 0

用ADO代码直接连接我觉得更好。  
  具体代码可以看MSDN。里面很详细的。Top

3 楼mousean(快乐无限)回复于 2002-12-06 18:59:51 得分 40

可以使用连接字串数据库  
  各种数据库的连接字串参见:  
  http://www.connectionstrings.com/  
   
  借助数据控件连接数据库如楼上所言,另外可以不用数据控件,在工程中引用microsoft   activex   data   objects   2.0   library   (2000可引用2.5)  
  一个实例:  
   
  Public   Function   Get_Data(ByVal   S_SQL_str   As   String)   As   Recordset     '得到记录集  
  Dim   con   As   ADODB.Connection  
  Dim   rs   As   ADODB.Recordset  
  Dim   strcnn   As   String  
          Set   con   =   New   ADODB.Connection  
          Set   rs   =   New   ADODB.Recordset  
           
          con.Open   "Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=yourdatabase;Data   Source=servers"  
   
          rs.CursorLocation   =   adUseClient  
          rs.CursorType   =   adOpenStatic  
          rs.Open   S_SQL_str,   con,   adOpenDynamic,   adLockOptimistic  
          Set   Get_Data   =   rs  
          Set   con   =   Nothing  
          Set   rs   =   Nothing  
           
  If   Err.Number   <>   0   Then  
          If   Err.Number   =   3704   Then  
                  MsgBox   "连接失败!"   ,   vbInformation,   "信息!"  
          Else  
                  MsgBox   Err.Description,   vbInformation,   "信息!"  
          End   If  
          Exit   Function  
  End   If  
  End   Function  
  Top

4 楼mousean(快乐无限)回复于 2002-12-06 19:01:01 得分 0

老是遗忘注明条件:  
   
  S_SQL="select   *   from   Yourtable"Top

5 楼linghuxiaochong(B&N)回复于 2002-12-06 19:12:44 得分 0

谢谢各位,我的意思是尽可能多的使用代码,少用难以移植的东西如odbc,急,以后再结帖吧Top

6 楼Arcan(Arcan)回复于 2002-12-06 19:19:16 得分 10

用ADO  
   
  Dim   Cn1   As   ADODB.Connection  
  Dim   Rs1   As   ADODB.Recordset  
   
  Set   Cn1   =   New   ADODB.Connection  
          ConnectStr   =   "Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=lgjygl;Data   Source=ServerName"  
   
  Cn1.Open   ConnectStr,   "sa(用户名)",   "1234(密码)"  
  Set   Rs1   =   New   ADODB.Recordset  
  Rs1.Open   "Select   *   from   Table   where   ……",   Cn1,   adOpenStatic  
   
   
  Top

7 楼cngo(阿果)回复于 2002-12-06 19:26:15 得分 0

当然可以.而且用纯代码灵活性好.Top

8 楼webmigrator(网络候鸟)回复于 2002-12-06 19:54:52 得分 5

用ado  
  建立类(如:adoConn.cls)封装数据库的连接和事务、执行sql、断开等方法操作  
  在程序启动时,建立全局的数据库类对象,利用对象负责所有对数据库的操作  
  方案灵活、可重用性好Top

9 楼flyycyu(fly)回复于 2002-12-06 20:08:23 得分 0

用ole   dbTop

10 楼jspan79(兰特)回复于 2002-12-06 20:12:17 得分 40

如果用SQL,在VB中不必用ADODC控件,只要有数据源就可以用添加代码的方式来连接数据库,我对ASP不是很熟,不好根据ASP说什么只给你个例子:  
   
          我有用SQL   Server建的数据库JinShengLiCai,其中有一张表J_MiMa,其中有两个字段UserID、Password。  
   
  用代码设计如下:  
   
  Dim   WithEvents   adoPrimaryRS   As   Recordset  
  Dim   mbChangedByCode   As   Boolean  
  Dim   mvBookMark   As   Variant  
  Dim   mbEditFlag   As   Boolean  
  Dim   mbAddNewFlag   As   Boolean  
  Dim   mbDataChanged   As   Boolean  
   
  Private   Sub   Form_Load()  
      '连接数据库  
      Dim   db   As   Connection  
      Set   db   =   New   Connection  
      db.CursorLocation   =   adUseClient  
      db.Open   "PROVIDER=MSDASQL;dsn=JinCai;uid=;pwd=;"  
   
      '连接字段  
      Set   adoPrimaryRS   =   New   Recordset  
      adoPrimaryRS.Open   "select   UserID,password   from   J_MiMa",   db,   adOpenStatic,   adLockOptimistic  
   
      Dim   oText   As   TextBox  
      '绑定文本框到数据提供者  
      For   Each   oText   In   Me.txtFields  
          Set   oText.DataSource   =   adoPrimaryRS  
      Next  
   
      mbDataChanged   =   False  
  End   Sub  
   
  Private   Sub   Form_Resize()  
      On   Error   Resume   Next  
      '设计仿ADO控件的按钮位置  
      lblStatus.Width   =   Me.Width   -   1500  
      cmdNext.Left   =   lblStatus.Width   +   700  
      cmdLast.Left   =   cmdNext.Left   +   340  
  End   Sub  
   
  Private   Sub   Form_KeyDown(KeyCode   As   Integer,   Shift   As   Integer)  
      If   mbEditFlag   Or   mbAddNewFlag   Then   Exit   Sub  
   
      Select   Case   KeyCode  
          Case   vbKeyEscape  
              cmdClose_Click  
          Case   vbKeyEnd  
              cmdLast_Click  
          Case   vbKeyHome  
              cmdFirst_Click  
          Case   vbKeyUp,   vbKeyPageUp  
              If   Shift   =   vbCtrlMask   Then  
                  cmdFirst_Click  
              Else  
                  cmdPrevious_Click  
              End   If  
          Case   vbKeyDown,   vbKeyPageDown  
              If   Shift   =   vbCtrlMask   Then  
                  cmdLast_Click  
              Else  
                  cmdNext_Click  
              End   If  
      End   Select  
  End   Sub  
   
  Private   Sub   Form_Unload(Cancel   As   Integer)  
      Screen.MousePointer   =   vbDefault  
  End   Sub  
   
  Private   Sub   adoPrimaryRS_MoveComplete(ByVal   adReason   As   ADODB.EventReasonEnum,   ByVal   pError   As   ADODB.Error,   adStatus   As   ADODB.EventStatusEnum,   ByVal   pRecordset   As   ADODB.Recordset)  
      '为这个   recordset   显示当前记录位置  
      lblStatus.Caption   =   "Record:   "   &   CStr(adoPrimaryRS.AbsolutePosition)  
  End   Sub  
   
  Private   Sub   adoPrimaryRS_WillChangeRecord(ByVal   adReason   As   ADODB.EventReasonEnum,   ByVal   cRecords   As   Long,   adStatus   As   ADODB.EventStatusEnum,   ByVal   pRecordset   As   ADODB.Recordset)  
      '验证代码置于此处  
      '下列动作发生时该事件被调用  
      Dim   bCancel   As   Boolean  
   
      Select   Case   adReason  
      Case   adRsnAddNew  
      Case   adRsnClose  
      Case   adRsnDelete  
      Case   adRsnFirstChange  
      Case   adRsnMove  
      Case   adRsnRequery  
      Case   adRsnResynch  
      Case   adRsnUndoAddNew  
      Case   adRsnUndoDelete  
      Case   adRsnUndoUpdate  
      Case   adRsnUpdate  
      End   Select  
   
      If   bCancel   Then   adStatus   =   adStatusCancel  
  End   Sub  
   
  Private   Sub   cmdAdd_Click()         '“新增记录”按钮代码  
      On   Error   GoTo   AddErr  
      With   adoPrimaryRS  
          If   Not   (.BOF   And   .EOF)   Then  
              mvBookMark   =   .Bookmark  
          End   If  
          .AddNew  
          lblStatus.Caption   =   "添加记录"  
          mbAddNewFlag   =   True  
          SetButtons   False  
      End   With  
   
      Exit   Sub  
  AddErr:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdDelete_Click()           '“删除记录”按钮代码  
      On   Error   GoTo   DeleteErr  
      With   adoPrimaryRS  
          .Delete  
          .MoveNext  
          If   .EOF   Then   .MoveLast  
      End   With  
      Exit   Sub  
  DeleteErr:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdRefresh_Click()         '“刷新数据库”按钮代码  
      '只有多用户应用程序需要  
      On   Error   GoTo   RefreshErr  
      adoPrimaryRS.Requery  
      Exit   Sub  
  RefreshErr:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdEdit_Click()         '“编辑记录”按钮代码  
      On   Error   GoTo   EditErr  
   
      lblStatus.Caption   =   "编辑记录"  
      mbEditFlag   =   True  
      SetButtons   False  
      Exit   Sub  
   
  EditErr:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdCancel_Click()       '“取消修改”按钮代码  
      On   Error   Resume   Next  
   
      SetButtons   True  
      mbEditFlag   =   False  
      mbAddNewFlag   =   False  
      adoPrimaryRS.CancelUpdate  
      If   mvBookMark   >   0   Then  
          adoPrimaryRS.Bookmark   =   mvBookMark  
      Else  
          adoPrimaryRS.MoveFirst  
      End   If  
      mbDataChanged   =   False  
   
  End   Sub  
   
  Private   Sub   cmdUpdate_Click()                   '“确定修改”或“更新修改”按钮代码  
      On   Error   GoTo   UpdateErr  
   
      adoPrimaryRS.UpdateBatch   adAffectAll  
   
      If   mbAddNewFlag   Then  
          adoPrimaryRS.MoveLast                             '移到新记录  
      End   If  
   
      mbEditFlag   =   False  
      mbAddNewFlag   =   False  
      SetButtons   True  
      mbDataChanged   =   False  
   
      Exit   Sub  
  UpdateErr:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdClose_Click()            
      Unload   Me  
  End   Sub  
   
  Private   Sub   cmdFirst_Click()         '“第一条记录”按钮代码  
      On   Error   GoTo   GoFirstError  
   
      adoPrimaryRS.MoveFirst  
      mbDataChanged   =   False  
   
      Exit   Sub  
   
  GoFirstError:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdLast_Click()                       '“最后一条记录”按钮代码  
      On   Error   GoTo   GoLastError  
   
      adoPrimaryRS.MoveLast  
      mbDataChanged   =   False  
   
      Exit   Sub  
   
  GoLastError:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdNext_Click()           '“下一条记录”按钮代码  
      On   Error   GoTo   GoNextError  
   
      If   Not   adoPrimaryRS.EOF   Then   adoPrimaryRS.MoveNext  
      If   adoPrimaryRS.EOF   And   adoPrimaryRS.RecordCount   >   0   Then  
          Beep  
            '已到最后返回  
          adoPrimaryRS.MoveLast  
      End   If  
      '显示当前记录  
      mbDataChanged   =   False  
   
      Exit   Sub  
  GoNextError:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   cmdPrevious_Click()                       '“上一条记录”按钮代码  
      On   Error   GoTo   GoPrevError  
   
      If   Not   adoPrimaryRS.BOF   Then   adoPrimaryRS.MovePrevious  
      If   adoPrimaryRS.BOF   And   adoPrimaryRS.RecordCount   >   0   Then  
          Beep  
          '已到最后返回  
          adoPrimaryRS.MoveFirst  
      End   If  
      '显示当前记录  
      mbDataChanged   =   False  
   
      Exit   Sub  
   
  GoPrevError:  
      MsgBox   Err.Description  
  End   Sub  
   
  Private   Sub   SetButtons(bVal   As   Boolean)       '按钮代码显示设计  
      cmdAdd.Visible   =   bVal  
      cmdEdit.Visible   =   bVal  
      cmdUpdate.Visible   =   Not   bVal  
      cmdCancel.Visible   =   Not   bVal  
      cmdDelete.Visible   =   bVal  
      cmdClose.Visible   =   bVal  
      cmdRefresh.Visible   =   bVal  
      cmdNext.Enabled   =   bVal  
      cmdFirst.Enabled   =   bVal  
      cmdLast.Enabled   =   bVal  
      cmdPrevious.Enabled   =   bVal  
  End   Sub  
   
  以上代码是一个页面的总设计,包括ADO代码的连接,及各个按钮功能。只要在窗体上加上控件就可用。!  
   
  这上面的代码都是在WIN2000+VB6.0+MS   SQL   2000下通过,直接复制、粘帖就可以了!  
  Top

11 楼Leftie(左手,为人民币服务)回复于 2002-12-07 12:04:19 得分 0

能不用ODBC就不要用它,它是最慢的Top

12 楼wangjg_79(编程高手)回复于 2002-12-07 12:14:39 得分 0

同意   mousean(幻想无限)Top

13 楼zqfleaf(动力港湾)回复于 2002-12-07 12:34:23 得分 0

adoTop

14 楼linghuxiaochong(B&N)回复于 2002-12-10 19:57:39 得分 0

真是收获颇丰呀。thank   you,my   friends.Top

相关问题

  • 谁有SQL后台,VB前台的典型管理程序?
  • 请指教:VC编写数据库程序,后台是SQL 2000,是用OLEDB OR ODBC OR OTHER?
  • 需要前台VB、后台SQL SEVER、利用ADO技术的实例,提供有分呀:)
  • sql vb
  • VB+SQL
  • VB + SQL?
  • VB+sql
  • VB+SQL
  • VB 如何通过ODBC 来访问ACCESS数据库和SQL Server~~~~
  • ====如何用VB开发网站后台?===

关键词

  • 数据库
  • 连接
  • 控件
  • 代码
  • 数据
  • vb
  • ado
  • sa
  • db
  • adoprimaryrs

得分解答快速导航

  • 帖主:linghuxiaochong
  • XLYT
  • mousean
  • Arcan
  • webmigrator
  • jspan79

相关链接

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

广告也精彩

反馈

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