MySQL有JavaScript绑定吗?

MySQL有JavaScript绑定吗?,javascript,mysql,firefox,Javascript,Mysql,Firefox,我想直接从Firefox中HTML页面中的JavaScript代码访问MySQL数据库 有这样的图书馆吗 非常清楚的是,CGI+Ajax将无法工作 一些背景:我想为MySQL数据库创建一个GUI前端(虽然不是这样,但已经足够接近了)。我正在考虑使用JavaScript作为一个本地HTML页面来实现这一点,但为了实现这一点,我需要在Firefox下为JavaScript提供MySQL绑定。我已经有了一个低于100 LOC的工作原型,但它需要一个web服务器,而且由于这个问题无法解决的原因,它无法工

我想直接从Firefox中HTML页面中的JavaScript代码访问MySQL数据库

有这样的图书馆吗

非常清楚的是,CGI+Ajax将无法工作

一些背景:我想为MySQL数据库创建一个GUI前端(虽然不是这样,但已经足够接近了)。我正在考虑使用JavaScript作为一个本地HTML页面来实现这一点,但为了实现这一点,我需要在Firefox下为JavaScript提供MySQL绑定。我已经有了一个低于100 LOC的工作原型,但它需要一个web服务器,而且由于这个问题无法解决的原因,它无法工作

注意:数据库和JavaScript代码都将在本地运行,不打算作为公共页面。事实上,HTML文件将作为file://// 文件我使用JavaScript的唯一原因是,它是唯一可以在我需要的地方进行GUI操作的系统

我愿意安装插件,DLL的,Windows依赖的东西或什么不让这项工作



编辑:答案似乎是“可以做到,但会很痛苦”。因为我的选择之一是将所有数据作为文件输出(丑陋,也不太灵活,但它会起作用),所以我想我不会继续这样做。

JavaScript代码存在于浏览器中。它可以向外部发出HTTP请求,但实际上没有更多。因此,按照设计,您将无法绑定到本地运行的程序。如果MySQL确实公开了HTTP服务,这是可能的,但事实并非如此

您可能会找到一个Firefox插件,它向JavaScript公开MySQL API,但我不知道有这样的插件

如果您不特别需要MySQL,而只需要一个可以从JavaScript代码访问的数据库,请查看。这是一个Firefox/InternetExplorer插件,它公开了一个数据库和其他一些好东西


如果您提供有关您试图构建的内容的更多信息,我们可能会为您提供更好的建议…

您需要的是一个HTTP服务,它公开您想要使用JavaScript获取的数据

一个小型的面向AJAX的服务器端脚本(PHP、Perl、Ruby等等),它接受一些参数并执行MySQL查询,以HTTP和JavaScript友好的方式(例如图像/jpeg或JSON)将数据发送到客户端


您将无法设置任何使MySQL可用于JavaScript的有用内容(一个工作的跨浏览器解决方案)。JavaScript可以实现HTTP,仅此而已。在服务器端进行调整。

不幸的是,您需要一台服务器。或者,如果您知道如何并且准备好被平台/浏览器锁定,您可以为您选择的浏览器编写一个插件(据我所知,Internet Explorer没有DLL,所以您需要自己编写一个)


您可能希望查看一个不需要安装的小型服务器。我修改了Lua的服务器,原因与您的服务器非常相似,因此它运行时没有外部依赖关系,因此我可以通过一次拷贝/粘贴来安装/卸载应用程序。

我无法给出完整的答案,但以下是使用MySQL+InternetExplorer+JavaScript(未经测试)来完成此操作的一般思路:

在JavaScript中,您可以使用

var myshell = new ActiveXObject( "WScript.shell" );
myshell.run( program names );
因此,我们的想法是使用存储在SQL文件中的SQL语句调用
mysql.exe
,然后捕获并解析输出:

mysql.exe -h localhost -u root dbo < script.sql > output.txt
mysql.exe-h localhost-u root dbooutput.txt
这一想法并非没有挑战:

  • 在调用
    mysql.exe
  • 您需要打开并解析输出文件

正如我上面提到的,我还没有测试过任何东西,所以整个想法可能都不起作用……

有趣的问题。但是你确实消除了很多障碍,选择了一种有很多自愿限制的语言/环境来限制对底层系统的访问

我喜欢罗伯特的建议,Xavante真的很轻

否则,我认为一个可行的解决方案可能是使用具有JDBC访问权限的Java小程序。我认为您需要对小程序进行签名,这应该不会有问题

我在Google中搜索了JavaAppletJDBC,看到了很多有前途的标题,IBM提供了这种小程序的源代码(用于DB2访问,但它应该很容易适应)


[编辑]还有另一种方法,用XPCOM dll包装mysqllib.dll,如中所述。不知道如何真正做到这一点,但也许它可以让你开始。

Javascript可以访问MySQL…但通常只在服务器上。我已经用Rhino完成了,Rhino是一个基于java的javascript解释器。只包括MySQL驱动程序,并且它是可用的。我想你也可以用小程序来实现这一点

使用Rhino,它会是这样的:

var DATABASE = {

    database: 'blog_development',
    host: 'localhost',
    username: 'dbuser',
    password: 'dbpass'

};

function ArticleModel(properties) {
  for (var p in properties) {
    this[p] = properties[p];
  }
}

ArticleModel.findAll = function() {
    var results = [];

    var jsConnectionObj = new Packages.MysqlConnection();
    c = jsConnectionObj.open(DATABASE.host,
                             DATABASE.database,
                             DATABASE.username,
                             DATABASE.password);

    if (c) {
      var s = c.createStatement();
      s.executeQuery("SELECT * FROM articles;");
      var rs = s.getResultSet();
      while (rs.next()) {
          results.push(new ArticleModel({
            id: rs.getInt("id"),
            title: rs.getString("title"),
            body: rs.getString("body")
          }));
      }
      rs.close();
      c.close();  
      return results;
    }

    throw new Error('could not connect to database');      
};

当然,如果javascript可以调用服务器,它可以调用本地ip地址(192.168.x.x),并且可以使用侦听特定端口的程序来处理它?然后程序所要做的就是与数据库交互,找到信息并将其传递回javascript?

如果您使用node.js,我想您可能想看看这个。
我知道这是一条老线索,但我认为它仍然是一条相关的线索

我在浏览器中将backbone.js用作客户端库。这简化了从浏览器内部进行的数据访问(几乎是琐碎的)

它依赖于服务器上的RESTful服务,这些服务很容易提供。举例来说,您可以使用node.js、phpwebsockets或socket.io


HTH

奇怪的问题。。。对糟糕的问题。。。没有。那么,向上投票反对向下投票你有没有考虑过写一个HTA在Internet Explorer中使用的可能性?您可以使用JavaScript+所有不安全的COM对象,进行ODBC调用,写入硬盘,等等。你只是不能再使用Firefox了——但是FWIW,你已经把自己绑在了相当多的东西上。因为你让我“哼”了,哦,克鲁德。你在开玩笑。唯一的