插入postgresql时swi-prolog odbc错误

时间:2012-08-14 17:48:47

标签: odbc prolog swi-prolog

我有以下问题,我正在寻求帮助:我正在使用swi-prolog和odbc接口连接到postgresql数据库。当我尝试在数据库中插入时出现问题。 SELECT工作正常,但INSERT不起作用。有谁知道我做错了什么。

这是我的简单测试代码:

:-use_module(library(odbc)).

connect(C):-
  odbc_connect(baza, C, [user(Mat), 
              password(lozinka), alias(baza), open(once)]).

sel(R) :-
    odbc_query(baza,
               'SELECT * FROM pacijent',
               R). 

ins:-
 odbc_query(baza, 'INSERT INTO pacijent (name, surname, passw, number) VALUES ("James", "Bond", 007, 007)').

当我尝试插入时,这是错误:

?- ins.
ERROR: ODBC: State S1000: [unixODBC]ERROR:  column "James" does not exist at character 30;
Error while executing the query

此外,我试图通过psql控制台插入,一切正常,但正如所说的问题是从prolog插入。

请帮帮忙,我就是在这里。

由于

2 个答案:

答案 0 :(得分:3)

建议:正确逃脱,不知道它是否足够。我转过来了

"James", "Bond"

\'James\', \'Bond\'

答案 1 :(得分:1)

问题是您是用双引号而不是单引号传递列名和姓的列数据。大多数数据库使用“(双引号)表示标识符,如表名和列名,以及'(单引号)表示数据。如何确保prolog我不知道。

我怀疑你也想引用其他两列。

在ODBC中,您将使用SQLGetInfo并获取SQL_IDENTIFIER_QUOTE_CHAR,这通常会返回双引号,这意味着引用标识符使用这些引号。