【发布时间】:2016-03-03 06:47:50
【问题描述】:
您能告诉我我使用的代码有什么问题吗?每次我执行这个,它都会抛出异常(无法连接到数据库)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New System.Data.OleDb.OleDbConnection()
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\socnet.accdb"
Dim sql As String = String.Format("INSERT INTO login VALUES('{username}','{password}','{secques}','{secans}')", txt_username.Text, txt_passwd.Text, txt_secquestion.Text, txt_secansw.Text)
Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql)
'Open Database Connection
sqlCom.Connection = conn
conn.Open()
Dim icount As Integer = sqlCom.ExecuteNonQuery
MessageBox.Show(icount)
MessageBox.Show("Successfully registered..", "Success", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show("Failed to connect to Database..", "Database Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
cmd_submit2_Click(sender, e)
End If
End Sub
如果有帮助,我正在使用 Access 2013 和 VS 2015 社区。谢谢。
【问题讨论】:
-
如果无法连接到数据库,则错误在您的连接字符串中。你能加吗?你在哪里初始化全局 conn 变量?
-
顺便说一句,我忘了包括有一个连接字符串。 Dim conn As New System.Data.OleDb.OleDbConnection() conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\socnet.accdb"
-
嗨,史蒂夫,感谢您指出这一点。我已经更新了我的代码。仍然出现同样的错误。
-
在桌面应用程序中使用 DataDirectory 意味着您的数据库位于 BIN\DEBUG 文件夹中。但是更好地查看您的代码,该错误消息是无用的,因为隐藏了真正的错误。请为调试工作将其更改为 MessageBox.Show(ex.Message) 并告诉我们异常中引发的真正错误是什么
-
最好学会使用参数来避免sql注入和格式化问题。名为 O'Brien 的人将无法通过您的查询。最好包含字段名称。