Mysql 使用Prolog-ODBC接口

Mysql 使用Prolog-ODBC接口,mysql,database,prolog,Mysql,Database,Prolog,我只是在学序言。我面前有一项任务。我必须使用Prolog ODBC接口将一些数据插入数据库,如mysql或MSSQL。我知道有一些谓词的例子,比如 我不知道如何准确地使用这些谓词并显示一个工作示例。有谁能告诉我,我如何确切地使用这些从prolog将数据插入数据库,如MySSQL或MSSQL。有人能告诉我通过ProLOG实现同样目标的确切要求吗 任何帮助或信息都将不胜感激 谢谢。中嵌入了一个较旧的示例(查找“test_1”)。我没有使用过它,但我猜se_greenslades是ODBC数据库实例名

我只是在学序言。我面前有一项任务。我必须使用Prolog ODBC接口将一些数据插入数据库,如mysql或MSSQL。我知道有一些谓词的例子,比如

我不知道如何准确地使用这些谓词并显示一个工作示例。有谁能告诉我,我如何确切地使用这些从prolog将数据插入数据库,如MySSQL或MSSQL。有人能告诉我通过ProLOG实现同样目标的确切要求吗

任何帮助或信息都将不胜感激


谢谢。

中嵌入了一个较旧的示例(查找“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到数据库的连接

注意事项:

  • 您可以从swi prolog中连接到任何数据库。我使用了Oracle 10g和MySQL 5
  • 首先,从下载“SWI Prolog”ODBC接口

  • “ODBCProlog.dll”和“OracleProlog.dll”包中有两个主要的“dll”文件

    接下来,这是与上面相同的示例代码。我将解释这些部分

  • PROLOG中的MYSQL连接

    
    
    :- 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'