2015-01-15 106 views
0

我正在開發一個學校項目的程序,它是基於「如何使用SQL Server與VB6(包括選擇&插入)」視頻的Youtube 。VB6和SQL - ODBC驅動程序不支持請求的屬性

程序看起來像這樣:

Seach Form

點擊單選按鈕使相鄰的文本框,並禁用其餘(除大文本框然後,搜索按鈕內,下面的代碼是。嵌入式:

Dim aConnection As New ADODB.Connection 
Dim aRecSet As New ADODB.Recordset 

Private Sub cmdSearch_Click() 
If txtStuNum.Enabled = True Then 
    aRecSet.Open "select * from studentTable where studentNumber'" & txtDisplay.Text & "'", aConnection, adOpenKeyset 
ElseIf txtName.Enabled = True Then 
    aRecSet.Open "select * from studentTable where Name'" & txtDisplay.Text & "'", aConnection, adOpenKeyset 
ElseIf txtGrade.Enabled = True Then 
    aRecSet.Open "select * from studentTable where Grade'" & txtDisplay.Text & "'", aConnection, adOpenKeyset 
ElseIf txtSection.Enabled = True Then 
    aRecSet.Open "select * from studentTable where section'" & txtDisplay.Text & "'", aConnection, adOpenKeyset 
End If 

End Sub 

當我按下搜索按鈕,這個彈出: Error Message

所有回覆讚賞!謝謝!

回答

3

你忘了=跡象,形式爲:

where field = 'string'

此代碼是開放的SQL注入攻擊,如果一個文本框,包含在'性格不好的事情都可能發生。使用參數&命令對象來避免這種情況,請參閱this

+0

嗨,謝謝你的回答!但是,當我添加「=」時,它仍然顯示相同的錯誤。而關於',我個人認爲這是好的,因爲我不指望任何人使用這個特定的角色。對此問題有更多可能的答案嗎?謝謝! – 2015-01-18 11:04:02

+0

嘗試刪除'adOpenKeySet',而改爲:'aRecSet.Open'select * from studentTable where section ='「&txtDisplay.Text&」'「,aConnection,adOpenStatic,adLockReadOnly' – 2015-01-18 14:34:15

+1

應該解決''''問題,一個SQL注入漏洞,並可能允許惡意用戶從數據庫中刪除數據; http://stackoverflow.com/questions/601300/what-is-sql-injection – 2015-01-18 14:37:11