我是VB编程的新手,遇到了一个问题:(几天后试图解决这个问题需要一些帮助!
我正在尝试将一些信息从VB表单传递到我的MySQL数据库。我已将所有文本框命名为与数据库中的字段相同,并检查了所有正确的数据库字段和文本框名称。
当我尝试在表单中输入信息时,我有时会在代码的.executeNonQuery部分出现错误。
为了测试,我将SQLStatement字符串输出到一个文本框(正确地从文本框中拉出所有字段)然后手动将完成的SQL查询输入到数据库中并且它工作正常。但是当我尝试一次性执行此操作时,如果文本太多(如果我在每个字段中输入'a',它的工作原理),它似乎会失败。它们是否限制了可以从VB传递的SQL查询的大小?所有MySql数据库字段都设置为没有大小限制的文本。
提前致谢!!!
Public Sub SaveQuote(ByRef SQLStatement As String)
Dim cmd As MySqlCommand = New MySqlCommand
With cmd
.CommandText = SQLStatement
.CommandType = CommandType.Text
.Connection = SQLConnection
.ExecuteNonQuery()
End With
SQLConnection.Close()
MsgBox("successfully Added!")
SQLConnection.Dispose()
End Sub
Private Sub CmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdSave.Click
Dim SQLstatement As String = "INSERT INTO laptopstock(forename,surname,emailaddress,contactnumber,quotedate,manufacturer,model,os,battery,drive,defects) VALUES('" & forename.Text & "','" & surname.Text & "','" & emailaddress.Text & "','" & contactnumber.Text & "', CURDATE(),'" & manufacturer.Text & "','" & modelnumber.Text & "','" & os.Text & "','" & batterycondition.Text & "','" & drivetype.Text & "','" & defects.Text & "')"
SaveQuote(SQLstatement)
End Sub
'测试SQL查询
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim testSQLstatement As String = "INSERT INTO laptopstock(forename,surname,emailaddress,contactnumber,quotedate,manufacturer,model,os,battery,drive,defects) VALUES('" & forename.Text & "','" & surname.Text & "','" & emailaddress.Text & "','" & contactnumber.Text & "', CURDATE(),'" & manufacturer.Text & "','" & modelnumber.Text & "','" & os.Text & "','" & batterycondition.Text & "','" & drivetype.Text & "','" & defects.Text & "')"
testbox.Text = testSQLstatement
End Sub
这是testSQLstatement = testbox.text
的输出 INSERT INTO laptopstock(forename,surname,emailaddress,contactnumber,quotedate,manufacturer,model,os,battery,drive,defects) VALUES('Joe','Bloggs','J.bloggs@jbloggs.com','07777777777', CURDATE(),'Sony','Vaio','Windows 7 Pro','Poor','DVD-Rom','Faulty Screen')
从我可以看到它的格式正确,当我直接将其输入MySql服务器上的查询时创建一条记录
答案 0 :(得分:0)
您的应用程序SQL登录是否对此表具有插入权限?尝试直接在SQL控制台中执行授权语句: “在dbo.laptopstock上授予插入(在此处添加应用程序登录)” 另外,我为什么要传递SQLStatement byref?您没有修改它,因此请使用byval。这不应该影响代码,但这是一个很好的做法。
我看到你说有时你得到一个错误,所以我们可以认为它是工作代码。这让我相信它在您的输入数据中。字段是否接受空值?它们是正确的格式吗?此外,这些事情中的一个与其他事情不同,即日期。您正在插入中传递curdate()函数。如果字段都是您提到的字符串,则表示您正在执行从日期到字符串的隐式转换。您可以使用Vb.Net等效项轻松构建插入字符串。 (Date.Now.ToString)。
最后,如果没有更详细的信息,很难调试 错误。由于您尚未发布SQLConnection和MySLCommand对象的代码(确定您并不认为MySQLCommand为New SQLCommand),我必须假设它们有效。