【问题标题】:C# Sql Column name is not validC# Sql 列名无效
【发布时间】:2014-05-11 11:37:37
【问题描述】:
private void button4_Click_1(object sender, EventArgs e)
    {
        string s = textBox1.Text;

        string s1 = comboBox1.Text;
        string s2 = comboBox2.Text;
        SqlCeConnection conn = new SqlCeConnection(@"Data Source=D:\Desktop\DB2\DB2\Database1.sdf");
        try
        {
            conn.Open();
            SqlCeCommand cmd = new SqlCeCommand(" update Kambariai set Klientas=[s]  Where [Kambario rūšis]=[s1]  ", conn);
            cmd.ExecuteNonQuery();
            toolStripStatusLabel1.Text = "Duomenys įrašyti";
            conn.Close();
        }
        catch (Exception ee)
        {
            MessageBox.Show(ee.Message);
        }
    }

我正在尝试通过使用textbox1.Text 更新Klientas 值来更新我的数据表,该值是string = s。它应该像 Sql 一样正常工作,但我收到一条错误消息,指出列名无效Column = s1s1 不应作为列名,而应用作列行值。

这是过时的图像 Kliento ID 已更改为 Klientas

【问题讨论】:

标签: c# sql


【解决方案1】:

试试这个:

SqlCeCommand cmd = new SqlCeCommand("update Kambariai set Klientas="+s+"  Where [Kambario rūšis]='"+s1+"' ", conn);

分析:

根据您的尝试,cmd 的价值如下:

update Kambariai set Klientas=s Where [Kambario rūšis]=s1

通过在其周围加上适当的双引号和单引号,值将类似于:

update Kambariai set Klientas=1 Where [Kambario rūšis]='bar'

旁注:

我不会推荐这种方法,因为它会增加 SQL 注入的风险。请改用参数化查询。

【讨论】:

  • 按照上面的建议完成,现在它理解 s1 的值,但仍然显示它是列名。
  • @user3625236:编辑了我的答案。
  • 好的,有些部分可以将值插入 Klientas 列,但值是 Klientas 但 textbox1.Text 不是 Klientas。 set Klientas="'+s"' 这部分必须做点什么。
  • @GSerg:我自己并不是 SQL 注入的忠实拥护者。只是想帮助 OP 得到他想要的东西。无论如何,更新了我的答案。
  • Kliento ID 更改为 Klientas,在 Image 附近的描述中读取。
【解决方案2】:

试试这个:

     SqlCeCommand cmd = new SqlCeCommand(" update Kambariai set Klientas='" + s +"'  Where [Kambario rūšis]='" + s1 + "'", conn);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多