无法插入我的数据库表

时间:2013-06-26 01:45:01

标签: c# asp.net database

我正在尝试将文本框值插入数据库。但我被提示“关键字'表'附近的语法不正确”这个错误 “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 个答案:

答案 0 :(得分:6)

正确的语法是

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

基本上,您在查询中添加了“table”一词,而不是SQL语法。它是

INSERT INTO tablename

答案 1 :(得分:3)

您没有转义文本,这不仅会破坏您的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(); 

答案 2 :(得分:2)

dbo.url_map 表中只有一列?如果此表有其他列,则可以尝试此查询

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

因为当您没有指定要插入的列日期时,您的数据库将尝试为表的所有列提取日期,如果您有 id列,登录并通过,则无法获取日期对于id和pass,这可能会导致插入错误。

相关问题