Nach Abschluss des Studentenverwaltungssystems und nach der Annahme durch den Master stellte ich fest, dass das ursprüngliche Konzept nicht wirklich verstanden wurde! Dann habe ich mir die 5 Beispiele kurz angesehen. Der Lehrer sagte oft, dass das Wichtigste beim Lernen die Wiederholung sei. Durch diese Beobachtung habe ich mein Verständnis der Grundkonzepte wiedererlangt.
Schauen Sie sich zunächst einige Fachbegriffe an: ADO---activex-Datenobjekt dynamisches Datenobjekt über OLE DB (Objektverknüpfung und Einbettung). Chinesisch: Objektverbindung und -einbettung (die unterste Programmschnittstelle), um Zugriff auf verschiedene Daten zu erreichen.
Als der Master mich nach den Objekten von ADO fragte, war ich verwirrt. Es stellte sich heraus, dass die Verbindung, der Datensatz usw. in der Datenbank definiert waren Es gibt insgesamt 7 Objekte, die in diesem Studenteninformationsverwaltungssystem vorkommen: die beiden oben genannten, 3 unabhängigen Objekte: Recordset, Connection, Command! Es gibt auch 4 untergeordnete Objekte: Feld, Parameter, Eigenschaft, Fehler
OLE DB besteht aus 3 Teilen: Datenanbieter, Daten Verbraucher, Servicekomponente. Ein Datenprovider ist ein Programm, das Daten ähnlich wie SQL Serser oder ODBC bereitstellt. Das von VB erstellte Programm ist ein typischer Datenkonsument. Es handelt sich um eine Datenanwendung, die mit den vom Datenprovider bereitgestellten Daten erstellt wird. Die Servicekomponente ist für die Verbindung von Datenanbietern und Datenkonsumenten verantwortlich.
In den fünf Beispielen wird die Microsoft Access-Datenbank (das Dateisuffix ist .mdb) verwendet, die vom visuellen Manager des externen VB-Programms erstellt wurde. und das Studenteninformationsverwaltungssystem. Die Datenbank wird mit SQL Server erstellt (das Suffix ist .sql). Der erste Schritt für eine Datenbankanwendung ist die Erstellung einer Datenbank! Der zweite Schritt besteht darin, im VB-Programm direkt auf die Referenz unter dem Projekt zu klicken und „Microsoft ActiveX Data Objects 2.6 Library“ auszuwählen. Der dritte Schritt besteht darin, mithilfe von Code eine Verbindung herzustellen. Werfen wir einen Blick auf den Vergleich verschiedener Verbindungsmethoden zur Datenbank:
1. Direkte Verbindung zur Zugriffsdatenbank
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. Verwenden Sie ODBC, um eine Verbindung zur Zugriffsdatenbank herzustellen, nämlich Benutzer-DNS. System-DNS und Datei-DNS Das Studenteninformationsverwaltungssystem nutzt zusätzlich Datei-DNS.
set objcn=new connection objcn.open="dsn=数据库文件名" set objrs=new recordset . objcn.close set objrs=nothing set objcn=nothing
3. Verwenden Sie Ado Data Control, um eine Datenbankverbindung herzustellen ist relativ einfach, stellen Sie einfach eine Verbindung über die Steuereigenschaften her.
Nachdem wir die Verbindungsmethoden von 5 Beispielen gelesen haben, analysieren wir den Code für die Verbindung zum Studentenverwaltungssystem während der Anmeldung:1 Das Anmeldefenster Um professioneller zu werden, wird der Anmeldename der Datenbank häufig auf den Systembenutzernamen festgelegt, sodass der Systembenutzer automatisch im Benutzernamenteil des Anmeldeformulars abgerufen und die API-Funktion aufgerufen wird Beginn:
Private Declare Function GetUsername Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As LongDer Formularladeteil erhält den Systembenutzernamen:
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
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
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
Das Obige ist der Inhalt der Datenbankeinrichtung und der Verknüpfungsprobleme. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php. cn)!