c#mysql DELETE FROM STRING WHERE ....我尝试使用string作为表名

时间:2014-12-17 15:32:32

标签: c# mysql

所以我有一个名为列名的字符串应该如何将字符串作为列名写入查询?这是我的代码:

string pas;
MySqlConnection cnn = new MySqlConnection(connectionString);
cnn.Open();
string likvidavimas = "DELETE FROM '"+ pas +"' WHERE ID='"+ ID +"'";
MySqlCommand cmd = new MySqlCommand(likvidavimas, cnn);
cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:3)

从表名中删除撇号

MySqlCommand likvidavimas = "DELETE FROM "+ pas +" WHERE ID='"+ ID +"'";

但我也会使用sql-parameters来阻止sql注入。

MySqlCommand likvidavimas = "DELETE FROM "+ pas +" WHERE ID=@ID";
likvidavimas.Parameters.AddWithValue("@ID", ID);

答案 1 :(得分:1)

不要让自己对安全问题持开放态度,我认为这不是一个好主意。我个人会避免使用动态sql,只为每个需要编辑的列写出不同的查询。如果您对这种方法不满,请查看this thread

喜欢这个......

string pas;
using (MySqlConnection cnn = new MySqlConnection(connectionString))
{
    string likvidavimas = string.empty;
    if (pas == "Table1")
    {
        likvidavimas = "DELETE FROM [Table1] WHERE ID=@ID";
    }
    else if (pas == "Table2")
    {
        likvidavimas = "DELETE FROM [Table2] WHERE ID=@ID";
    }
    likvidavimas.Parameters.AddWithValue("@ID", ID);
    cnn.Open();
    using (MySqlCommand cmd = new MySqlCommand(likvidavimas, cnn))
    {
        cmd.ExecuteNonQuery();
    }
}

另外,我总是建议使用using来帮助在执行结束时清理资源。不确定MySqlCommand会是什么,但如果是IDisposable,我也要说好。{/ p>