VS2010 MySqlException был не обработан - PullRequest
0 голосов
/ 08 июня 2011

Я новичок в программировании на VB и столкнулся с проблемой :( после нескольких дней, пытаясь решить эту проблему, нужна помощь!

Я пытаюсь передать некоторую информацию из формы VB в мой MySQLбазы данных. Я назвал все текстовые поля такими же, как поля в базе данных, и проверил все поля моей базы данных и имена текстовых полей, которые все верны.

Когда я пытаюсь ввести информацию в форму, я иногда получаю ошибкув разделе кода .executeNonQuery.

Чтобы проверить, я вывел строку SQLStatement в текстовое поле (которое правильно перетянуло все поля из текстовых полей), а затем вручную ввел завершенный запрос SQL в базу данных, и онсработало. Но когда я пытаюсь сделать это за один раз, кажется, что это не сработает, если слишком много текста (если я введу «а» в каждом поле, это работает). Являются ли они ограничения на размер запроса SQL, который может быть переданиз VB ?? все поля базы данных 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, создается запись

1 Ответ

0 голосов
/ 11 июня 2011

Имеет ли ваша учетная запись SQL права на вставку этой таблицы? Попробуйте выполнить оценку предоставления в консоли SQL напрямую: msgstr "предоставить вставку на dbo.laptopstock для (добавьте ваш логин приложения здесь)" Кроме того, я почему вы передаете SQLStatement byref? Вы не модифицируете его, поэтому используйте byval. Это не должно влиять на код, но это хорошая практика.

Я вижу, вы заявляете, что иногда вы получаете сообщение об ошибке, поэтому мы можем предположить, что это рабочий код. Это заставляет меня верить, что это в ваших входных данных. Поля принимают нули? Это правильный формат? Кроме того, одна из этих вещей не похожа на другие, дата. Вы передаете функцию curdate () во вставке. Если все поля являются строками, как вы упомянули, то вы выполняете неявное преобразование даты в строку. Вы можете так же легко построить строку вставки, используя эквивалент Vb.Net. (Date.Now.ToString).

Наконец, трудно отладить это без более подробной информации о ошибка. Поскольку вы не опубликовали код для своих объектов SQLConnection и MySLCommand (конечно, вы не подразумеваете MySQLCommand как New SQLCommand), я должен предположить, что они работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...