Невозможно вставить в мою таблицу базы данных


Я пытаюсь вставить значение textbox в базу данных. Но мне было предложено с этой ошибкой "неправильный синтаксис рядом с ключевым словом "таблица" " Есть ошибка с " cmd.ExecuteNonQuery (); " что не так с моими кодами?

Ниже приведен мой код:

string query;
string str = "Data Source=blank blank blank;Initial Catalog=test;User ID=hello;Password=password";
SqlConnection con = new SqlConnection(str);
con.Open();
query = "INSERT INTO table dbo.url_map Values ('" + tbLongURL.Text + "')";
SqlCommand cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery();
con.Close();
3 2

3 ответа:

Правильный синтаксис

query = "INSERT INTO dbo.url_map Values ('" + tbLongURL.Text + "')";

В основном вы добавили слово "таблица" в запрос, который не является синтаксисом SQL. Это

INSERT INTO tablename

Вы не избегаете текста, который может не только нарушить ваш SQL-запрос, но и сделать вас уязвимым для SQL-инъекции, если входные данные не будут очищены. Что вы должны сделать:

string query;
string str = "Data Source=blank blank blank;Initial Catalog=test;User ID=hello;Password=password";
SqlConnection con = new SqlConnection(str);
con.Open();
query = "INSERT INTO dbo.url_map Values (@Url)";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Url", tbLongURL.Text);
cmd.ExecuteNonQuery();
con.Close(); 

В dbo.url_map таблица имеет только столбец? если в этой таблице есть другие столбцы, вы можете попробовать этот запрос

INSERT INTO dbo.url_map(login) VALUES('" + tbLogonURL.Text + "')";

Потому что, когда вы не указываете, какую дату столбца вы вставляете, ваша БД попытается взять дату для всех столбцов таблицы, если у вас есть столбец id, logon и pass , он не сможет принять дату для id и pass, и это может вызвать ошибку для вашей вставки.