Mysql 使用Prolog-ODBC接口
我只是在学序言。我面前有一项任务。我必须使用Prolog ODBC接口将一些数据插入数据库,如mysql或MSSQL。我知道有一些谓词的例子,比如 我不知道如何准确地使用这些谓词并显示一个工作示例。有谁能告诉我,我如何确切地使用这些从prolog将数据插入数据库,如MySSQL或MSSQL。有人能告诉我通过ProLOG实现同样目标的确切要求吗 任何帮助或信息都将不胜感激Mysql 使用Prolog-ODBC接口,mysql,database,prolog,Mysql,Database,Prolog,我只是在学序言。我面前有一项任务。我必须使用Prolog ODBC接口将一些数据插入数据库,如mysql或MSSQL。我知道有一些谓词的例子,比如 我不知道如何准确地使用这些谓词并显示一个工作示例。有谁能告诉我,我如何确切地使用这些从prolog将数据插入数据库,如MySSQL或MSSQL。有人能告诉我通过ProLOG实现同样目标的确切要求吗 任何帮助或信息都将不胜感激 谢谢。中嵌入了一个较旧的示例(查找“test_1”)。我没有使用过它,但我猜se_greenslades是ODBC数据库实例名
谢谢。中嵌入了一个较旧的示例(查找“test_1”)。我没有使用过它,但我猜se_greenslades是ODBC数据库实例名;您必须在本地设置中查找您的。在那之后,我想您应该使用普通的SQL语句(在odbc中)来执行插入和更新。检查您已经链接到的SWI文档,并在internet上搜索基本的ODBC用法(我认为SWI接口非常标准)
“ProLOG”是什么意思?这个例子怎么样:
:- use_module(oracle).
go :-
db_open('Your Database Name', 'scott', 'tiger'),
db_import('DEPT'('DEPTNO', 'DNAME', 'LOC'), dept),
db_import('EMP'('EMPNO', 'ENAME', 'JOB', 'MGR', 'HIREDATE', 'SAL', 'COMM', 'DEPTNO'), emp),
%% Uncomment it, if you do not want to see SQL statements.
%% db_flag(show_query, _, off),
db_query(empinfo(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DNAME, LOC),
( emp(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO),
dept(DEPTNO, DNAME, LOC)
)
),
get_result,
db_close.
get_result:-
empinfo(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DNAME, LOC),
write_ln([EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DNAME, LOC]),
fail.
get_result.
摘自此处:感谢您对@ThomasH和@StarWind Software的回复。我可以使用您指出的代码sames找出解决方案。这是一张完整的照片。我确信有那么多人需要清楚地了解从Prolog到数据库的连接 注意事项:
:- use_module(oracle).
go :-
db_open('mysql5', 'root', 'admin'),
db_import('EMP'('EMPID', 'EMPNAME'), emp),
%%db_flag(show_query, _, off),
db_query(emp(EMPID, EMPNAME), emp(EMPID, EMPNAME)),
%% Run the query.
get_result,
%% Modify the database.
%%emp_ins(109, 1, 221),
%%test_del(109, 1, 221),
%% Commit changes.
db_transaction(commit),
db_close.
%% Retrieve all records over backtracking.
get_result:-
emp(EMPID, EMPNAME),
write_ln([EMPID, EMPNAME]),
fail.
get_result.
下面是说明部分:
db_open('mysql5','root','admin'),
第一部分“mysql5”是mysql的dsn名称。如果您的系统中没有安装nmot,可以从MySQL网站下载。下一个是用户名和密码
db\u标志(显示查询,关闭),
打印输出中的SQL语句。注释它将阻止它输出SQL查询
db_导入('EMP'('EMPID','EMPNAME'),EMP),
这里“EMP”是数据库中的实际表名,“EMP”是它的别名。
以这种方式创建是很重要的,否则它将不起作用
db_查询(emp(EMPID,EMPNAME),emp(EMPID,EMPNAME)),
接下来,对于查询数据库,上述调用“db_query”将使用2个参数。您可以像使用JOIN语句一样使用该语句查询两个表。如果您使用的只是查询一个表,那么有必要给出两次相同的查询,因为此调用需要两个参数
需要在数据库中插入任何内容吗
emp_ins(109,1,221),
这个约定只不过是将_-ins添加到别名中,prolog认为它是对数据库的插入调用
同样地
恩普·德尔(109,1221),
我想其余的都是不言自明的
现在,下一部分是,如果您需要连接到Oracle数据库,那么唯一需要更改的语句是:
:- use_module(odbc).
:-使用_模块(odbc)。
其余的都差不多。您必须记住的一点是,在指定数据库时需要使用oracle实例名。
通常在Oracle 10g中,实例名称为“orcl”,而对于Oracle Express edition,约定为:
'your full computer name:port/XE','username','password'
您的计算机全名:端口/XE'、“用户名”和“密码”
您将能够连接到数据库并用这段代码显示结果
希望这有帮助。您好,上面说找不到odbc\u connect。为了在prolog中使用ODBC,我需要安装什么吗?我认为它是一个内置谓词。你能帮忙吗?@JPro听着,Prolog不像Prolog,odbc_connect也不是Prolog的ISO标准的一部分。也就是说,我知道的odbc_connect是SWI Prolog的一部分。Sicstus Prolog可能有类似的东西,像LPA Prolog这样的商业Prolog肯定有,对于其他实现也是如此。您必须处理Prolog的特定实现,您不能期望生成的代码可移植给其他人。在您的笔记中,您指出,任何数据库-我正在尝试了解,这是如何与MongoDB一起工作的-您能帮我吗?
'your full computer name:port/XE','username','password'