2016-03-10 3 views
2

У меня была проблема с доступом к базе данных. Я не мог подключиться к моей базе данных SQL. ОшибкаОшибка SqlDataBase. Вставить заявление не работает

Ошибка синтаксиса в инструкции INSERT INTO заявления

Я пробовал все, но я просто нужна помощь. Вот мой код:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    SqlDataSource1.InsertCommand = "INSERT INTO Information Page (RName, RCountry) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "')" 
    Label4.Text = DateTime.Now.ToString("dd MMMM yyyy h:mm") 
End Sub 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    TextBox1.Text = " " 
    TextBox2.Text = " " 
End Sub 
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click 
    name = TextBox1.Text 
    country = TextBox2.Text 
    SqlDataSource1.Insert() 
    Response.Redirect("http://localhost:49179/WebForm1.aspx") 
End Sub 
+2

Вы не указали, какую версию SQL вы используете, однако ваш текущий запрос недействителен, поскольку в имени вашей таблицы есть пробел. Если вы используете MySQL, вам нужно использовать обратные тики: '\' Information Page \ '' или если вы используете сервер Microsoft SQL, вам нужно использовать квадратные скобки '[Information Page]' – Jaco

+0

. Какое точное имя таблицы вы хотите вставить? Имя (одна строка, возможно, в окружении ') должно быть единственной вещью между именами INTO и именами в скобках. – BryanT

+0

Как T.S. и вы молоды, читайте о ПАРАМЕТРИРОВАННЫХ операторах SQL. Строя строки, вы WIDE-OPEN для sql-инъекции. Параметрированные запросы в основном представляют собой значения владельца места в sql-statement, тогда вы можете добавить SqlDataSource1.InsertCommand.Parameters.Add(), чтобы заполнить нужное значение в соответствующем месте-заполнителе. Читайте об этом, и вы увидите PLENTY примеров для работы. Удачи вам в обучении. – DRapp

ответ

1

Так как вы 12 лет, я не буду углубляться в то, почему вы должны параметризовать ваши запросы и как это сделать. Но вот то, что вы можете себе увидеть

INSERT INTO Information Page (RName, RCountry)

Позволяет взять кусок выше. Когда вы отправляете его как команду в БД, парсер SQL SQL думает ... Я парсер БД на минуту: Получил «Вставить» - хорошо, получил «В» - хорошо, получил «Информацию» - проверьте таблицу или представление - не найдено - ОШИБКА.

Но если бы вы разместили свою «Информационную страницу» на «[]» ->[Information Page]. Теперь компилятор пойдет: Got "[" find "]" - получить строку между ними - проверить таблицу или представление - хорошо ...

Вообще говоря, вам разрешено иметь имена таблиц с пробелами в них, но это на самом деле не очень хорошая идея использовать эту возможность.

Смежные вопросы