如果SQL查询包含保留关键字,如何避免SqlException?

时间:2017-10-24 09:12:31

标签: c# sql sql-server ado.net keyword

string connection = ConfigurationManager.ConnectionStrings["Table"].ConnectionString;
using (SqlConnection con = new SqlConnection(connection))
{
    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Table", con))
    {
        using (SqlDataAdapter da = new SqlDataAdapter())
        {
            da.SelectCommand = cmd;
            using (DataTable dt = new DataTable())
            {
                da.Fill(dt);//This line throws exception
                return dt;

我有这段代码,我想用它从网格中获取所选数据并插入另一个表中。在调试时,它会导致da.Fill(dt);行的异常。

以下是抛出的异常:

  

类型' System.Data.SqlClient.SqlException'的异常发生在System.Data.dll中但未在用户代码中处理

     

其他信息:关键字'表'附近的语法不正确。

2 个答案:

答案 0 :(得分:2)

正如例外所述,“Table”是SQL中的关键字。如果要在查询中将其用作表名,则必须将select语句更改为

SELECT * FROM [Table]

答案 1 :(得分:0)

理想情况下,您不应将Table用作表名。这是保留关键字。有关保留关键字的完整列表,请参阅this链接。

无论如何,如果你必须在SQL查询中使用保留关键字,你应该把它们放在方括号中。

将您的SQL语句更改为:

SELECT * FROM [Table]

请注意,表名在方括号内。