为什么不插入插入执行?

时间:2011-09-02 16:35:37

标签: javascript sql firefox-addon

数据库已打开,表已创建。但我无法插入记录,我正在使用mozilla sqlite存储:

Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
let file = FileUtils.getFile("ProfD", ["filef.sqlite"]);
let dbconn = Services.storage.openDatabase(file);
dbconn.executeSimpleSQL('CREATE TABLE IF NOT EXISTS "quicklink" ("id" INTEGER PRIMARY KEY NOT NULL , "name" VARCHAR NOT NULL , "href" VARCHAR NOT NULL )');
var sqlinsert=dbconn.createStatement('INSERT INTO "quicklink" ("name","href") VALUES (:name,:href)');
sqlinsert.params.name = "Something";
sqlinsert.params.href = "URL";
dbconn.close();

我在firebug控制台中没有收到任何错误,或者在try {} catch(){}语句中显示错误。为什么?这有什么问题呢?

2 个答案:

答案 0 :(得分:2)

  1. 通常,您无法从客户端Javascript进行数据库访问。

    有很多例外(例如,您可能在服务器上使用Node.js,或者您在本地Sqlite数据库上使用HP WebOS),但我的帖子中没有看到任何关于您的内容环境或数据库连接。

  2. 假设您可以在您的环境中使用Javascript合法地连接到数据库,我看不到您在哪里执行准备好的SQL语句。

  3. 建议:

    1. 请指定您正在使用的数据库和数据库

    2. 请向我们展示“执行”声明和相应的错误处理程序

    3. 请剪切/粘贴您在错误处理程序或数据库日志中收到的任何错误消息。

    4. 附录:

      好的 - 我现在和你在一起:

      1)您正在使用Mozilla“存储”API。

      2)你需要在“createStatement()”之后调用“executeStatement()”。

      3)你还应该有一个“handleError”函数。

      文档和示例代码在此处:

      http://developer.mozilla.org/En/Storage

答案 1 :(得分:0)

您使用的数据库服务器是什么?如果您使用的是SQL Server,请使用分析器查看实际执行的针对SQL Server的命令,并查看它生成的错误。