处理'和"在插入查询上

时间:2014-03-30 14:17:38

标签: sqlite

基于Textbox对象,我使用INSERT查询将文本添加到SQLite表的记录中:

INSERT INTO tblActivity ([Activity_Category], 
[Activity_Category_Sub], 
[Activity_Start], 
[Activity_End], 
[Activity_Duration]) 
Values ('" + clVariables.strActivityCurrent + "', '" 
+ clVariables.strActivitySubCurrent + "', '" 
+ clVariables.datActivityStart.ToString() + "', '" 
+ clVariables.datActivityEnd.ToString() + "', " 
+ clVariables.dblActivityDuration + ")"

clVariables.strActivitySubCurrent可能包含“或”,我想知道将这些字符添加到字段的正确方法。

谢谢。

1 个答案:

答案 0 :(得分:1)

正确的方法是使用准备好的声明:

INSERT INTO tblActivity (
    "Activity_Category", 
    "Activity_Category_Sub", 
    "Activity_Start", 
    "Activity_End", 
    "Activity_Duration") 
VALUES (?, ?, ?, ?, ?)

然后,在执行它时,将值绑定到预准备语句中的参数(?,以便我们在此处使用位置参数),并且您不必解决问题如何引用字符串。更好的是,数据库引擎不必为您执行的每一行重新编译语句。

唯一一次尴尬的是,如果你使用的是SQLite shell,它不支持参数(那里不是真正的主语言来进行绑定)但是你可以进行批量导入还有其他方式(你可以在没有它们的情况下离开 ad hoc 查询工作)。但是我猜你用其他语言托管,可能是C#,在这种情况下,你没有理由做错了。它不需要更多的代码工作,但它确实需要不同的工作。

(现在,如果您从用户那里获取不同的表名或列名,因为它们无法参数化。这也有点可怕。)