SQLite Delphi引发错误的异常

时间:2010-04-29 00:54:56

标签: sql delphi exception sqlite

  

项目CompetitionServer.exe引发了异常类ESQLiteException,并显示消息'执行SQL时出错   错误[1]:SQL错误或缺少数据库   “INSERT INTO MatchesTable(MatchesID,RoundID,AkaFirstName,AoFirstName)VALUES(1,2,p,o)”:没有这样的列:p'。流程停止了。使用步骤或运行继续。

是的,p不是列,它是我试图插入的数据。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

在SQL中,作为数据的字符串常量必须用引号括起来。否则,字符串将被解释为关键字,表名或列名,这就是这里发生的事情。使用'p'代替普通p。

答案 1 :(得分:2)

你的值'p'是一个常数,所以你需要把它放在引号中。所以声明必须是

INSERT INTO MatchesTable(MatchesID,RoundID,AkaFirstName,AoFirstName)VALUES(1,2,'p','o')

答案 2 :(得分:2)

您必须使用SQL参数。标准的Delphi方法:

Query1.SQL.Text := 'INSERT INTO MatchesTable(MatchesID,RoundID,AkaFirstName,AoFirstName)VALUES(1,2,:p,:o)';
Query1.Params[0].Value := ...;
Query1.Params[1].Value := ...;
Query1.ExecSQL;

但细节可能取决于您使用的数据访问组件。