基于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
可能包含“或”,我想知道将这些字符添加到字段的正确方法。
谢谢。
答案 0 :(得分:1)
正确的方法是使用准备好的声明:
INSERT INTO tblActivity (
"Activity_Category",
"Activity_Category_Sub",
"Activity_Start",
"Activity_End",
"Activity_Duration")
VALUES (?, ?, ?, ?, ?)
然后,在执行它时,将值绑定到预准备语句中的参数(?
,以便我们在此处使用位置参数),并且您不必解决问题如何引用字符串。更好的是,数据库引擎不必为您执行的每一行重新编译语句。
唯一一次尴尬的是,如果你使用的是SQLite shell,它不支持参数(那里不是真正的主语言来进行绑定)但是你可以进行批量导入还有其他方式(你可以在没有它们的情况下离开 ad hoc 查询工作)。但是我猜你用其他语言托管,可能是C#,在这种情况下,你没有理由做错了。它不需要更多的代码工作,但它确实需要不同的工作。
(现在,如果您从用户那里获取不同的表名或列名,因为它们无法参数化。这也有点可怕。)