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