在将字符串插入数据库期间单引号转义

lun*_*box 27 c# database insert special-characters

使用"'"时插入失败.示例字符串是:他是个男孩.我试图使用转义符号跳过"'",但我相信这不是正确的方法.

textBox3.Text.Replace("'", " \'");
string sql= "insert into gtable (1text,1memo) values ('"+textBox3.Text+"',null)";
        OleDbCommand cmd = new OleDbCommand(sql, con);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
Run Code Online (Sandbox Code Playgroud)

我确实可以选择用"`"替换"'",但这也会改变数据库中的文本.我希望保持"'"相同,并将其插入到数据库中.

cod*_*biz 51

试试这个

    string sql= "insert into gtable (1text,1memo) values (@col1,NULL)";
    OleDbCommand cmd = new OleDbCommand(sql, con);
    cmd.Parameters.AddWithValue("@col1",textBox3.Text);
    con.Open();
Run Code Online (Sandbox Code Playgroud)

  • +1通过将SQL语句的结构与数据分开,这消除了sql注入的危险(并且不需要转义任何东西). (6认同)

jue*_*n d 42

尝试

string sql= "insert into gtable (1text, 1memo) " + 
            "values ('" + textBox3.Text.Replace("'", "''") + "', null)";
Run Code Online (Sandbox Code Playgroud)

  • 技术上正确的答案,但这是在寻找麻烦.使用参数,如@codingbiz所建议的那样. (14认同)

Nik*_*wal 6

要插入单引号替换数据库'''.在数据库中只有单引号.

用这个

string sql= "insert into gtable (1text,1memo) values ('" 
            + textBox3.Text.Replace("'", "''") + "', null)";
Run Code Online (Sandbox Code Playgroud)

其余代码相同.

  • @MatinKh:今天不是我的日子. (2认同)