vb+SQL做了一個登入介面,運行時報錯"物件變數或With塊變數未設定",然後點調試之後發現給記錄集賦值並沒有成功,最後發現其實是資料庫並未串連成功。
VB通過ADO串連SQL Sever資料庫可以分為有來源資料庫串連和無來源資料庫串連,它們的區別是是否使用了DSN(資料來源名稱)來決定。
1. 無來源資料庫串連
所謂無來源資料庫串連並不是說不需要資料來源,如果沒有資料來源談何串連?只是無來源資料庫串連不需要配置ODBC資料來源,利用ADO通過代碼就可以實現串連。
無來源資料庫串連的實現需要在vb 6.0中引用Microsoft ActiveX Data Object 2.6 library和MicrosoftActiveX Data Object Recordset 3.6 Library兩個組件,然後運用connection對象的connectionstring屬性進行串連。
以簡單的登陸系統為例,首先要在sql sever資料庫中建立一個以student為名的資料庫,vb代碼如下:
Option ExplicitPublic LoginSucceeded As BooleanDim conn As ADODB.ConnectionDim rs As ADODB.RecordsetPrivate Sub cmdCancel_Click()LoginSucceeded = FalseMe.HideEnd SubPrivate Sub cmdOK_Click()Set conn = New ADODB.ConnectionSet rs = New ADODB.Recordset'建立無來源資料庫串連conn.ConnectionString="driver={sql server};server=.;uid=sa;pwd=;Database=student"conn.ConnectionTimeout = 50conn.OpenDim str As StringSet rs.ActiveConnection = connrs.CursorType = adOpenDynamicIf Trim(txtUserName.Text = "") ThenMsgBox "使用者名稱不可為空,請重新輸入使用者名稱!", vbOKOnly + vbExclamation, "警告"txtUserName.SetFocusElsestr = "select * from login_user where name ='" & Trim(txtUserName.Text) & "'"rs.Open strIf rs.EOF = True ThenMsgBox "沒有這個使用者,請重新輸入使用者名稱!", vbOKOnly + vbExclamation, "警告"txtUserName.SetFocusElse'登入成功,串連主視窗If (Trim(txtPassword.Text) = Trim(rs.Fields("password"))) ThenLoginSucceeded = TrueMe.Hidemain.ShowElseMsgBox "密碼不正確,請重輸入密碼!", , "警告"txtPassword.SetFocusSendKeys "{Home}+{End}"End IfEnd IfEnd IfEnd Sub
其中server= . ;參數是用來訪問本機伺服器,還可以寫成server=(local);或將server設定成本機伺服器名(一般為電腦名稱,可登陸sql server伺服器查看)。uid=sa;pwd=;用來指定安全登入的登入名稱和所需的密碼,如果用sa登入名稱登陸的話可以通過在sql server的物件總管的安全性——登入名稱——sa右擊屬性來設定是否要求輸入密碼,然後確定pwd的值與所設密碼一致。Database=student;用來設定所訪問的資料庫名。
2. 有來源資料庫串連
ODBC資料來源分為以下三類:
(1) 使用者DSN:只有建立資料來源的使用者才可以使用他們自己建立的資料來源,而且只能在當前的電腦上使用。
(2) 系統DSN:任何使用你的電腦的使用者和程式都可以使用的DSN。
(3) 檔案DSN:除了具有系統DSN的功能之外,還能被其它使用者在其它電腦上使用。
建立ODBC資料來源的步驟
(1) 啟動控制台。
(2) 雙擊ODBC表徵圖,啟動ODBC資料來源。
(3) 換到“使用者DSN”標籤,單擊“添加”。選擇SQLServer作為資料來源的驅動程式。
(4) 為資料來源命名,按提示操作即可建立ODBC資料來源。
建立有來源資料庫串連
建立資料來源是進行有來源資料庫串連的第一步,下面同樣是運用ADO物件模型的主要元素Connection(串連)進行來源資料庫串連。ConnectionString是Connection對象的屬性名稱,提供資料提供者或服務提供者開啟到資料來源的串連所需要的特定資訊,包括Database、DSN、UID等。
(1) Database:字串運算式,指定伺服器上的資料庫名稱。
(2) UID:字串運算式,為ODBC資料來源指定使用者標識(使用者帳號名)。
(3) PWD:字串運算式,為ODBC資料來源指定使用者口令。
(4) DSN:字串運算式,指定串連的ODBC資料來源名稱。
利用已配置好的ODBC資料來源進行串連。
仍舊以建立登入系統為例,首先建立ODBC資料來源名稱為stud,通過ADO與資料庫student進行串連,vb代碼只需要將connection對象的connectionstring屬性的參數做以下更改就行:
conn.ConnectionString="DSN=stu;uid=sa;pwd=; Database=student"