当前位置:编程学习 > VB >>

大神救命啊 ,vb连接ACCESS 数据库错误



下面我们给出一个连接到Access数据库的实例,此例中用到的数据库为Access 2003。首先在e盘建立一个名为vb的文件夹,然后打开Access 2003,单击“文件”→“新建”,在右侧出现的任务窗格中单击“空数据库”,在出现的对话框中,我们在"文件名"项后输入给新数据库起的名称并选择保存位置,这里我们为新数据库命名为Access_db并保存到我们刚才建立的文件夹中,如下图,单击"创建"按钮后,系统就生成了一个新的Access空数据库。
在空数据库中,还没有任何用户所创建的表,接下来我们就要使用设计器(如下图)为Access_db数据库建立表。
 
首先我们为Access_db创建一个名为“wzdz”的表,该表由以下4个字段组成:
(1)编号:此为Access自动添加的主键字段,我们直接拿来使用。我们可直接设置后三个字段,在输入完了wzdz表的各个字段之后,此时关闭表设计器,Access会提示是否要进行保存表,选择“是”,然后为表起名为“wzdz”。因为没有定义主键(primary Key),Access会提示为表加上一个主键,按提示将编号设置为主键即可。
(2)后三个字段分别为网站名称、网站地址和网站描述,三个字段的属性是相同的,如下:
▲数据类型:文本。
▲字段大小:50
▲有效性规则:无。
▲必填字段:否
▲允许空字符串:否
▲索引:无
设置完以上字段后,再重新在设计视图中打开wzdz表(方法:在设计器中右击wzdz表名,选“设计视图”命令),应如下图所示:
 
有了数据库和表之后,如果想让VB应用程序访问数据库,还需进行数据源的配置。只有在配置完成了数据源之后,才能让VB应用程序同数据库进行正确的连接工作,在VB应用程序中才可以通过ADO对象来进行具体数据的操作,如果在建立了数据库之后没有对数据源进行配置或者对数据源的配置工作出现错误,则在此之前所做的一切工作都是白费的。
我们按上一章所述的步骤进行ODBC数据源的配置,建立一个名为Access_db的用户DSN,接下来我们使用VB去具体地连接到Access_db数据库。
首先打开VB,新建一个标准exe工程,在工程的form1中我们输入如下的代码:
Private Sub Form_Load()

  Dim cnn As ADODB.Connection
  Dim my_recordset As ADODB.Recordset
  Dim connect_string As String
  Dim statestring As String
  Set cnn=New ADODB.Connection
  Set my_recordset=New ADODB.Recordset
  '连接Access数据库
  connect_string="DSN=Access_db;UID=;PSW="
  cnn.Open connect_string
  Select Case cnn.State
    Case adStateClose
         statestring="adStateClosed"
    Case adStateOpen
         statestring="adStateOpen"
  End Select
  '显示连接的状态
  MsgBox "连接成功!",,statestring
  '对wzdz表进行查询操作
  my_recordset.Open "Select * from wzdz",cnn
  my_recordset.Close

End Sub
之前都是按照上面做的运行的时候显示cnn.Open connect_string有错误。80040e4e,操作已被取消
不知道总么改 求大神救命哪


--------------------编程问答-------------------- 那个DSN是需要自己创建的,或者需要直接使用文件的话更改一下对应的connection string。

看看你帖子中间的内容,你有照着做吗?
有了数据库和表之后,如果想让VB应用程序访问数据库,还需进行数据源的配置。只有在配置完成了数据源之后,才能让VB应用程序同数据库进行正确的连接工作,在VB应用程序中才可以通过ADO对象来进行具体数据的操作,如果在建立了数据库之后没有对数据源进行配置或者对数据源的配置工作出现错误,则在此之前所做的一切工作都是白费的。
我们按上一章所述的步骤进行ODBC数据源的配置,建立一个名为Access_db的用户DSN,接下来我们使用VB去具体地连接到Access_db数据库。 --------------------编程问答-------------------- 以前写的一个类,给你直接调用吧,支持ms SQL Server 和Access数据库
你用Access的话改一下库名,路径,

'*****************************************************************************
'数据库连接类
'需要添加引用"Microsoft ActiveX Data Objects 2.8 Library"
'支持SQL Server和ACCESS连接
'By CLY 2010.10.12
'*****************************************************************************

Option Explicit

Private conn As New ADODB.Connection
Private DB_Err As String

Public dbMode As Integer   '数据库类型(1:SQL_Server; 2:Access)
Public Server As String    '服务器名称(针对SQL Server)
Public UserID As String    '用户名(针对SQL Server)
Public UserPWD As String   '用户密码(针对SQL Server)
Public DBName As String    '数据库名称(针对SQL Server和Access)
Public DBPwd As String     '数据库密码(针对Access)
Public DBPath As String    '路径(针对Access)

Public rs As New ADODB.Recordset

'初始化
Private Sub Class_Initialize()
    dbMode = 1
    Server = ""
    UserID = ""
    UserPWD = ""
    DBName = "STC_TXL.mdb"
    DBPwd = "1111"
    DBPath = "\\10.134.139.74\StencilData"
End Sub

'销毁
Private Sub Class_Terminate()
On Error Resume Next
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

'连接数据库
Public Function OpenConn() As Boolean
On Error GoTo Err_
    DB_Err = ""             '清除错误信息
    If conn.State = 1 Then  '已经连接
        OpenConn = True
        Exit Function
    End If
    If dbMode = 1 Then      '使用SQL Server数据库
        conn.Open "provider=SQLOLEDB.1;" & _
            "Data Source=" & Server & ";" & _
            "Initial Catalog=" & DBName & ";" & _
            "User ID=" & UserID & ";PWD=" & UserPWD & ";"
    ElseIf dbMode = 2 Then  '使用Acess数据库
        DBPath = IIf(Right(DBPath, 1) = "\", DBPath, DBPath & "\")
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath & DBName & ";" & _
            "Jet OLEDB:Database Password=" & DBPwd & ";Persist Security Info=False"
        conn.Mode = adModeReadWrite
        conn.Open
    End If
    If conn.State = 1 Then
        OpenConn = True
    Else
        OpenConn = False
    End If
Exit_:
    Exit Function
Err_:
    DB_Err = Err.Description
End Function


'断开数据库连接
Public Sub CloseConn()
    Class_Terminate
End Sub

Public Sub ShowErr()
    If Len(DB_Err) = 0 Then
        MsgBox "没有错误发生", vbInformation
    Else
        MsgBox "数据库操作发生错误" & Chr(10) + Chr(13) & _
            "【错误描述】" & DB_Err, vbCritical, "错误"
    End If
End Sub

'SQL操作
Public Function SQLExt(ByVal strSQL As String) As Boolean
On Error GoTo Err_
    DB_Err = ""                             '清除错误信息
    If Not conn.State = 1 Then              '连接到数据库
        If Not OpenConn() Then
            MsgBox "无法连接数据库,请与管理员联系!", vbOKOnly + vbCritical, "错误"
            Exit Function
        End If
    End If
    conn.Execute (strSQL)
    SQLExt = True
Exit_:
    Exit Function
Err_:
    SQLExt = False
    DB_Err = Err.Description
End Function


'查询操作
Public Function QueryExt(ByVal strSQL As String, Optional lngCursorType As Long = 0, Optional lngLockType As Long = 1) As Boolean
On Error GoTo Err_
    DB_Err = ""                             '清除错误信息
    If Not conn.State = 1 Then              '连接到数据库
        If Not OpenConn Then
            MsgBox "无法连接数据库,请与管理员联系!", vbOKOnly + vbCritical, "错误"
            Exit Function
        End If
    End If
    rs.CursorLocation = adUseServer
    rs.Open strSQL, conn, lngCursorType, lngLockType
    QueryExt = True
Exit_:
    Exit Function
Err_:
    DB_Err = Err.Description
    QueryExt = False
End Function


补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,