Перво-наперво.
Что вы ожидаете от " & "'YES'
?Поправьте меня, если я ошибаюсь, но вы хотите передать Yes
в качестве значения?Или, может быть, даже "Yes"
(с кавычками)?
Если это первый, то достаточно только Yes
внутри одинарных кавычек ('Yes'
).Для второго случая это будет '\"Yes\"'
.
С вашим кодом все еще слишком много проблем.Вы используете оператор &
для объединения строк.Некоторые могут возразить, что нет проблем с использованием &
, но посмотрите на код и скажите, какое у вас первое выражение?Ну, мое первое выражение было:
Это выглядит ужасно!
Так что вместо конкатенации вы можете просто отформатировать строку.Конечно, результаты те же, но форматирование строк будет выглядеть чище и профессиональнее.Вот пример:
Dim x as String = "My Name Is {0}."
Dim MyName As String = String.Format(x, "Zack Raiyan")
Теперь приходит MsgBox(SQL)
.Что ж, мне не нужно второе предположение для этого, вы используете эту строку, чтобы увидеть, соответствует ли ваш SQL-запрос ожидаемому. Если это так, почему бы просто не поставить точку останова?
Теперь поговорим о объявлениях ваших переменных.Зачем объявлять переменную, не инициализируя ее каким-либо экземпляром, но позже, сразу после нескольких строк кода, инициализировать ее, когда это можно было сделать в первую очередь?Пример:
Dim x As New ObjectX
Вместо
Dim x As Object
.....
.....
x = New Object()
Наконец, если вы разочаровываетесь, читая все эти предложения, давайте поговорим о главном виновнике здесь ваше заявление sql .
insert into approved ( word, approveds)
Пробел до и после скобок может не иметь никакого значения, но зачем вообще их использовать?Вы можете быть новичком в программировании, но понимаете это:
Вы бы потратили 20% своего времени на написание кода и 80% своего времени на его поддержку.
ИтакВсегда пишите чистые, простые и многократно используемые коды.
Двигаемся дальше ...
VALUES ('" & RichTextBox1.SelectedText & "')
Не делайте этого! Вместо этого передайте параметры, а затем передайте им значения.Быстрый пример:
Dim sql = New SqlCommand("Insert Into TableX(Column1)Values(@Column1Val)", MySqlConnection)
sql.Parameters.Add("@Column1Val", SqlDbType.VarChar).Value = "XYZ"
Есть более короткий путь:
sql.Parameters.AddWithValue("@Column1Val", "XYZ")
, но используйте его только тогда, когда вы знаете, что передаете значение того же типа данных, что и столбец, который выпередаем его.
Я объяснил, сколько мог.Я надеюсь, что вы понимаете свои ошибки, а также надеетесь, что вы не ошибетесь, увидев, как мой ответ касается исключения, которое вы получаете.Если вам все еще неясно, оставьте комментарий, и я был бы рад помочь.