【问题标题】:Incorrect syntax near'@ate' c# passing parameter'@ate' c# 传递参数附近的语法不正确
【发布时间】:2021-04-23 09:48:09
【问题描述】:

当我执行这段代码时,我得到一个错误

'@ate'._ 附近的语法不正确,用户未处理异常

请帮忙。

string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

using (SqlConnection con = new SqlConnection(cs))
{  
    dat = "h1";

    SqlCommand ren = new SqlCommand();
    StringBuilder sbcomand = new StringBuilder("create table @ate (rno varchar, stat bit)");

    SqlParameter param = new SqlParameter("@ate",dat);
    ren.Parameters.Add(param);
    ren.CommandText = sbcomand.ToString();
    ren.CommandType = CommandType.Text;
    ren.Connection = con;

    con.Open();
    ren.ExecuteNonQuery();
    con.Close();
}

【问题讨论】:

  • 完整阅读异常 - 到目前为止没有帮助......除此之外,您还可以添加一个 try/catch 块,最好使用 finally 来清理和关闭连接。
  • 获取您的 SQL 并在 SSMS 中独立测试它 - 您会发现它无效。此外,您确实希望避免使用字符串连接来执行 SQL,否则您将结交新朋友Little Bobby TablesAKA SQL 注入攻击。如果您必须执行那种动态 SQL,请将其封装在存储过程中。

标签: c# sql-server parameters


【解决方案1】:
string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

using (SqlConnection con = new SqlConnection(cs))
{  
    dat = "h1";
    string sbcomand = string.Format("create table {0} (rno varchar, stat bit)", dat );

    con.Open();
    using (SqlCommand command = new SqlCommand(sbcomand , con))
    command.ExecuteNonQuery();
    con.Close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多