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)
这适用于任何条目,除非名称中有引号.
最好使用参数化的sql查询,而不是使用字符串连接来构建它们.可以在MSDN上找到文档和示例.
如果你坚持使用字符串连接,则使用双引号而不是\来转义它.
firstName = firstName.Replace("'", "''" );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4655 次 |
| 最近记录: |