【问题标题】:Unable to insert into my database table无法插入我的数据库表
【发布时间】:2013-06-23 00:20:26
【问题描述】:

我正在尝试将文本框值插入数据库。但是我被提示“关键字'table'附近的语法不正确”的错误 “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();

【问题讨论】:

标签: c# asp.net database


【解决方案1】:

正确的语法是

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

基本上,您将“表”一词添加到不是 SQL 语法的查询中。这是

INSERT INTO tablename

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 现在的错误不在于表格,而在于 url_map。我的查询有什么问题?
    • 一开始没看懂,不过INSERT INTO table dbo.url_map应该是INSERT INTO dbo.url_map
    【解决方案3】:

    dbo.url_map 表中只有一列?如果这个表有其他列,你可以试试这个查询

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多