为什么这段代码不起作用

时间:2011-04-23 11:32:01

标签: asp.net mysql

我已经设置了一个编辑器将其内容输入到数据库中,然后我可以检索并编辑它并再次保存它,这是我使用的:

string user = Page.User.Identity.Name;

    MySqlConnection conn = new MySqlConnection(@"connection string;");
    MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv='" + '"' + Editor1.Content.Replace("'", "''") + '"' + "' WHERE id = '" + user + "' ", conn);

    conn.Open();
    cmd.ExecuteNonQuery();

    conn.Close();

插入和选择工作正常,但更新没有,它不会给出错误但它不会改变内容(无论我改变它总是保持相同的内容);

我知道这对sql注入是开放的,我应该切换到参数化查询,我会在工作之后做到这一点

我正在使用asp.net 3.5,mysql 5.0

我已经确定了问题并用它提出了一个新问题 谢谢大家的帮助

2 个答案:

答案 0 :(得分:0)

为什么它不起作用并不重要,这是完全错误的。

您对SQL injection attacks持开放态度,这应该是您首先关注的问题。

您可以通过使用参数来解决此问题,例如:

MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv=?cv WHERE id = ?id", conn);
cmd.Parameters.AddWithValue("cv", Editor1.Content);
cmd.Parameters.AddWithValue("id", user);

答案 1 :(得分:0)

ExecuteNonQuery应该返回受影响的行数,记住这一点你可以调试代码。我们可以帮你写一下你用字符串生成的sql语句吗?

除此之外我想到的第一件事是id ='user'可能不正确,id表示一个整数,但名称看​​起来像是一个字符串值。