sql ce escape'(单引号)C#

Dus*_*Lew 4 c# regex insert visual-studio-2010 sql-server-ce

我正在编写一些代码来存储数据库中的名称.我将名称限制为仅限于某些字符,但姓氏是一个挑战.由于有些人的名字中有单引号(例如O'Brian),我需要允许这个.所以我写了一个正则表达式替换来替换'with a',我认为应该使'a literal'.它可以替代它,但它仍然标志着字符串的结束,我得到了错误

解析查询时出错.[令牌行号= 1,令牌行offeset = 71,令牌错误= Brian]

我理解错误,单引号标记要输入的字符串的结尾,留下引号之外的其余字符串Brian.

我正在使用的代码:

Regex reg = new Regex("\'");
firstName = reg.Replace(firstName, "\\'");
lastName = reg.Replace(lastName, "\\'"):
Run Code Online (Sandbox Code Playgroud)

然后使用string.format构建select查询

sqlInsertObj.CommandText = string.Format("INSERT INTO childNameId (childFName, childLName) VALUES ('{0}', '{1}')", fName, lName);
 sqlInsertObj.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这适用于任何条目,除非名称中有引号.

Mik*_*son 5

最好使用参数化的sql查询,而不是使用字符串连接来构建它们.可以在MSDN上找到文档和示例.

如果你坚持使用字符串连接,则使用双引号而不是\来转义它.

firstName = firstName.Replace("'", "''" );
Run Code Online (Sandbox Code Playgroud)