我尝试在程序中设置与数据库的连接,并且在向数据库添加数据时遇到了问题。我知道我做错了什么,但我不能为我的生活搞清楚!
基本上程序在ExecuteNonQuery()行抛出一个错误,说连接没有打开。但是我上面几行打开了连接?可能是因为我试图从单独的表单导入连接?
错误是:未处理的类型' System.InvalidOperationException'发生在MySql.Data.dll中 附加信息:连接必须有效且开放。
我知道有些部分是被记录出来的,这就是我在做什么事情时的故障排除。
Imports MySql.Data.MySqlClient
Public Class frmCompanyAdd
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
'Try
frmMain.conn.Open()
' Catch ex As Exception
'End Try
Dim cmd As New MySqlCommand(String.Format("INSERT INTO `Company` (`companyname` , `location` , `contactphone` , `numberpc`) VALUES (" & txtcompanyname.Text & "," & txtPst.Text & " , " & txtPhone.Text & "," & txtPcNo.Text & ")"))
cmd.ExecuteNonQuery()
'frmMain.conn.Close()
End Sub
答案 0 :(得分:1)
在构造它之后,您似乎永远不会在cmd
命令上设置连接。您需要在构造函数中提供连接或在之后设置它。
像往常一样,我还必须指出您的INSERT语句对可能的恶意SQL注入攻击持开放态度。您应该使用参数化查询,而不是将值连接在一起以形成查询。
我无法安装库,但它可能只是一个构造函数重载,例如Dim cmd As New MySqlCommand(yourProperlyParameterizedQuery, frmMain.conn)