由于我的数据库表的列名而导致的错误是“来自”

时间:2014-08-18 00:58:35

标签: c# asp.net database ado.net

我的数据库列名是"来自"但是当我将列名更改为其他名称时出现错误错误未发生。为什么?

    protected void Button1_Click(object sender, EventArgs e)
    {
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Mycon"].ConnectionString);
    con.Open();
    string qry="insert into Mynew(name,age,from,address,job)values(@name,@age,@from,@address,@job)";
    SqlCommand cmd= new SqlCommand(qry, con);
    cmd.Parameters.AddWithValue("@name", TextBox1.Text);
    cmd.Parameters.AddWithValue("@age", TextBox2.Text);
    cmd.Parameters.AddWithValue("@from",TextBox3.Text);
    cmd.Parameters.AddWithValue("@address", TextBox4.Text);
    cmd.Parameters.AddWithValue("@job", TextBox5.Text);
    cmd.ExecuteNonQuery();
    con.Close();
    }

当我将列名改为city时没有收到错误为什么会发生?

1 个答案:

答案 0 :(得分:5)

from是SQL中的保留关键字。如果要将其用作表名,则必须通过以下方式将其转义:

  • 将它放在反引号(MySQL和其他)之间
  • 将其放在方括号(MS Access,SQL server)
  • 之间

所以要么

insert into Mynew(name,age,`from`,address,job)values(@name,@age,@from,@address,@job)

insert into Mynew(name,age,[from],address,job)values(@name,@age,@from,@address,@job)

取决于您使用的数据库。

为避免混淆,使用不同的列名称显然会更好。