使用c#在mysql中插入引号

本文关键字:插入 mysql 使用 | 更新日期: 2023-09-27 18:28:37

有人能帮我用c#在mysql中插入单引号吗。我知道如何实现这一点,但我不知道语法,到目前为止,这是我的代码

 if (txtcode.Text.Contains("'") == true)
  {
      txtcode.Text.Replace("'", "''");
  }

但是我的txtcode没有得到''的值,我也尝试了这个代码

 if (txtcode.Text.Contains("'") == true)
  {
      txtcode.Text.Replace("'", "'''");
  }

仍然不起作用。。有人能猜到如何做到这一点吗?提前感谢

使用c#在mysql中插入引号

您不需要执行任何字符串替换,只需使用参数化SQL就可以了。

所以你不能这样做:

// BAD CODE - DO NOT USE
string sql = "INSERT INTO TABLE Person (ID, NAME) VALUES ('" + id 
    + "', '" + txtCode.Text + "')";

即:

  • 易受SQL注入攻击(以及引号等尴尬字符)
  • 转换时很脆(日期/时间转换特别痛苦)
  • 很难阅读,因为它混合了SQL和数据

相反,你会使用类似的东西:

string sql = "INSERT INTO TABLE Person (ID, NAME) VALUES (@id, @name)";
using (var command = new MySqlCommand(sql, conn))
{
    command.Parameters.Add("@id", MySqlDbType.VarChar).Value = id;
    command.Parameters.Add("@name", MySqlDbType.VarChar).Value = txtCode.Text;
    command.ExecuteNonQuery();
}

您应该真正使用参数化查询,它将正确处理引号,如:

string s = "Text with this ''quote''";
MySqlCommand cmd = new MySqlCommand("INSERT INTO table (Column) VALUES (@quotedString);", connection);
cmd.Parameters.AddWithValue("@quotedString", s);
cmd.ExecuteNonQuery();

这也防止了SQL注入的进行。

你能试试这个吗:

if (txtcode.Text.Contains("'") == true)
  {
      txtcode.Text.Replace("'", @"'''");
  }