데이터베이스 구축 및 연결 문제

黄舟
풀어 주다: 2017-02-28 14:01:13
원래의
1287명이 탐색했습니다.

학생 관리 시스템을 마치고 석사 합격 후 원래 개념이 깊이 이해되지 않았다는 것을 알았습니다! 그런 다음 선생님께서 학습에서 가장 중요한 것은 반복이라고 자주 말씀하셨던 5가지 예를 간략히 살펴보았습니다. 이를 통해 저는 기본 개념을 다시 이해할 수 있었습니다.

몇 가지 전문 용어를 먼저 살펴보겠습니다. ADO---activex 데이터 객체 OLE DB를 통한 동적 데이터 객체(객체 연결 및 포함) 중국어: 다양한 데이터에 대한 액세스를 달성하기 위한 최하위 프로그램 인터페이스인 개체 연결 및 임베딩.

마스터가 ADO의 개체에 대해 물었을 때 나는 혼란스러웠습니다. 우리가 데이터베이스에 정의한 연결, 레코드 세트 등이 있었습니다. 설정은 모두 ado의 객체였습니다. 본 학생 정보 관리 시스템에서 가장 일반적인 객체는 위의 두 가지, 레코드 세트, 연결, 명령의 3가지 객체입니다. 또한 4개의 보조 개체가 있습니다: 필드, 매개 변수, 속성, 오류

OLE DB는 데이터 공급자, 데이터 공급자, 데이터의 세 부분으로 구성됩니다. 소비자, 서비스 구성 요소. 데이터 공급자는 SQL Server 또는 ODBC와 유사한 데이터를 제공하는 프로그램입니다. VB에서 만든 프로그램은 데이터 공급자가 제공하는 데이터를 사용하여 만든 데이터 응용 프로그램입니다. 서비스 구성 요소는 데이터 공급자와 데이터 소비자를 연결하는 역할을 담당합니다.

다섯 가지 예에서는 vb 외부 프로그램의 시각적 관리자가 생성한 micrsoft 액세스 데이터베이스(파일 접미사는 ​​.mdb)를 사용하고, 그리고 학생 정보 관리 시스템 SQL Sever(접미사는 .sql)를 이용하여 데이터베이스를 생성합니다. 데이터베이스 응용 프로그램의 첫 번째 단계는 데이터베이스 생성입니다! 두 번째 단계는 ADO 참조를 설정하는 것입니다. VB 프로그램에서 프로젝트 아래의 참조를 직접 클릭하고 Microsoft ActiveX Data Objects 2.6 라이브러리를 선택합니다. 세 번째 단계는 코드를 사용하여 연결을 설정하는 것입니다. 데이터베이스에 대한 다양한 연결 방법을 비교해 보겠습니다.

1. 액세스 데이터베이스에 직접 연결

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를 사용하여 액세스 데이터베이스에 연결하려면 사용자 DNS, 시스템 DNS라는 3가지 데이터 소스 연결 방법이 있습니다. , 파일 DNS, 학생 정보 관리 시스템에서 활용하는 파일 DNS가 추가된 것입니다.

set objcn=new connection
objcn.open="dsn=数据库文件名"
set objrs=new recordset
                .
objcn.close
set objrs=nothing
set objcn=nothing
로그인 후 복사


3. 이 방법은 상대적으로 ado 데이터 제어를 사용합니다. 간단합니다. 컨트롤 속성에서 연결하면 됩니다.

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
로그인 후 복사


요약하면 연결 설정을 위한 3단계 전략이 있습니다. 열기 - 실행(추가, 삭제) , 수정 및 확인) - -닫기

위 내용은 데이터베이스 구축 및 연동 문제에 대한 내용이며, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿