首頁  >  文章  >  資料庫  >  資料庫的建立與連結問題

資料庫的建立與連結問題

黄舟
黄舟原創
2017-02-28 14:01:131228瀏覽

             #完成學生管理系統,經過師傅的驗收,發現對最初的概念了解相當不深刻!又反過頭對5實例簡單看了一下,老師常說,學習最重要的是反复,透過這次觀看,重新對基本概念有所了解。

首先看幾個專業名詞:ADO---activex data object動態資料物件透過OLE DB(object linking and embed中文:物件連接與嵌入,是底端程式介面)實作對不同資料的存取。

當時師傅問我關於ADO的對象時,一下子懵了,原來我們在建立資料庫定義的connection,recordset等都是ado 的對象,它共有7個對象,在這次的學生資訊管理系統中最常見的就是上面那倆,3個獨立對象:recordset,connection,command!還有4個附屬物件:field,parameter,property,error

#OLE DB由3個部分組成:資料提供者,數據消費者,服務組件。資料提供者是類似SQL Serser,ODBC提供資料的程序,VB創建的程序就是一種典型的資料消費者,它是利用資料提供者提供的資料創建的資料應用程式。服務組件負責連接資料提供者與資料消費者。

五實例當中應用了vb外界程式的視覺化管理器所建立的micrsoft access資料庫(其檔案後綴名為.mdb),而學生資訊管理系統的資料庫是利用SQL Sever創建的(後綴名為.sql),資料庫類別的應用程式第一步是建立資料庫!第二步,建立ADO引用,在vb程式裡直接點選工程下的引用選擇microsoft activex data objects 2.6 library即可!第三步,用程式碼建立連線。下面讓我們來看看資料庫的不同連接方式比較:

1.直接連接access資料庫

dim Objcn as new connection,objRs as new recordset
objcn.connectionstring="Prvider=Microsoft.jet.OLEDB.3.5.1;" & _
"data sourse=数据远文件路径"         '连接数据提供者与数据源
objcn.open
       strSQL=“select ……from …… where……”
set objrs.activeconnection=objcn   '将数据库记录集与数据源相匹配
objrs.open(strSQL)      '记录集打开
       .                       ‘进行数据库的增删改查操作
objcn.close         ‘关闭数据库
set objrs=Nothing
set objcn=Nothing


2. 利用ODBC連接access資料庫,ODBC有3種資料來源連接方式,分別為使用者DNS,系統DNS,檔案DNS,學生訊息管理系統利用的正是文件DNS的新增。

set objcn=new connection
objcn.open="dsn=数据库文件名"
set objrs=new recordset
                .
objcn.close
set objrs=nothing
set objcn=nothing


#3.利用ado data控制項建立資料庫連接,這種方法相對簡單,只要從控制項屬性裡面進行連線即可。

看完了5實例的連線方法,解析一下對學生管理系統連接登陸時的程式碼:

1.登陸窗體中,為走向專業化,往往資料庫的登入名稱設定為系統用戶名,所以在登陸窗體的用戶名部分自動取得系統用戶,在開頭部分呼叫API函數:

Private Declare Function GetUsername Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

窗體載入部分獲得系統使用者名稱:

Private Sub Form_Load()
    Dim sbuffer As String
    Dim lsize As Long
    
    sbuffer = Space$(255)  '因无法确定系统用户名的长度,先开辟一个255(最大值)空格字符控件
    lsize = Len(sbuffer)   'lsize盛放sbuffer字符串的真是长度
    Call GetUsername(sbuffer, lsize) 
    'api中字符串作函数,需要提前确定大小
    
    If lsize > 0 Then
        txtusername.Text = Left$(sbuffer, lsize)
    Else
        txtusername.Text = vbNullString
        '没有字符串
    End If
    
    ok = False
    micount = 0  ’用于登陆次数的标记
 End Sub


#2.在確認按鈕中建立連線:

Private Sub cmdOK_Click()
    Dim txtSQL As String
    Dim mrc As ADODB.Recordset '用于保存数据源记录集
    Dim MsgText As String
    
    UserName = ""     '先将登录名滞空
    If Trim(txtusername.Text = "") Then     '确认用户名输入框不为空
        MsgBox "没有这个用户,请重新输入用户", vbOKOnly + vbExclamation, "警告"
        txtusername.SetFocus
    Else
        txtSQL = "select * from user_info where user_id ='" & txtusername.Text & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)    '
 调用模块当中的executesql函数
建立数据库连接
        If mrc.EOF Then
            MsgBox "没有这个用
户,请重新输入用户", vbOKOnly + vbExclamation, "警告"
            txtusername.SetFocus
        Else                                    '确认密码
            If Trim(mrc.Fields(1)) = Trim(txtpassword.Text) Then
                ok = True
                mrc.Close
                Me.Hide
                UserName = Trim(txtusername.Text)
                frmmain.Show
            Else
                MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
                txtpassword.SetFocus
                txtpassword.Text = ""
            End If
        End If
    End If
    
    micount = micount + 1          '值允许3次输入
    If micount = 3 Then
        Me.Hide
    End If
    Exit Sub
    
End Sub


3.請理解執行函數excutesql函數的連接方式。

Public Function ConnectString() As String
    ConnectString = "FileDSN=student.dsn;UID=sa;PWD=123" '文件源,登录名,验证密码
End Function
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
   Dim cnn As ADODB.Connection
   Dim rst As ADODB.Recordset
   Dim sTokens() As String
   
   'On Error GoTo ExecuteSQL_Error
   
   sTokens = Split(SQL) '该函数定义将sql语句中的词以空格为分解符分解开放进一个数组里
   Set cnn = New ADODB.Connection '实体化,连接数据源
   cnn.Open ConnectString     '打开数据源
   
   If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then       '比较确定sql数据开始单词是否为增,删,改
      cnn.Execute SQL   '执行SQL语句
      MsgString = sTokens(0) & " query successful"
      '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同
   Else
      Set rst = New ADODB.Recordset    '实例化记录集
      rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic   '打开要执行的内容sql,连接数据源,游标类型:键集游标,窗口值固定大小
      '得到临时表,游标指向第一条记录
      'get RecordCount,
      Set ExecuteSQL = rst
      MsgString = "查询到" & rst.RecordCount & _
         " 条记录 "
   End If
   
ExecuteSQL_Exit:  ‘关闭连接
   Set rst = Nothing
   Set cnn = Nothing
   Exit Function
   
ExecuteSQL_Error:
   MsgString = "查询错误: " & _
      Err.Description
   Resume ExecuteSQL_Exit
End Function


總結來說,建立連線分三步驟策略:開啟--執行(增刪改查)- -關閉

 以上就是資料庫的建立與連結問題的內容,更多相關內容請關注PHP中文網(www.php.cn)!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn