MySQL有JavaScript绑定吗?
我想直接从Firefox中HTML页面中的JavaScript代码访问MySQL数据库 有这样的图书馆吗 非常清楚的是,CGI+Ajax将无法工作 一些背景:我想为MySQL数据库创建一个GUI前端(虽然不是这样,但已经足够接近了)。我正在考虑使用JavaScript作为一个本地HTML页面来实现这一点,但为了实现这一点,我需要在Firefox下为JavaScript提供MySQL绑定。我已经有了一个低于100 LOC的工作原型,但它需要一个web服务器,而且由于这个问题无法解决的原因,它无法工作 注意:数据库和JavaScript代码都将在本地运行,不打算作为公共页面。事实上,HTML文件将作为file://// 文件我使用JavaScript的唯一原因是,它是唯一可以在我需要的地方进行GUI操作的系统 我愿意安装插件,DLL的,Windows依赖的东西或什么不让这项工作MySQL有JavaScript绑定吗?,javascript,mysql,firefox,Javascript,Mysql,Firefox,我想直接从Firefox中HTML页面中的JavaScript代码访问MySQL数据库 有这样的图书馆吗 非常清楚的是,CGI+Ajax将无法工作 一些背景:我想为MySQL数据库创建一个GUI前端(虽然不是这样,但已经足够接近了)。我正在考虑使用JavaScript作为一个本地HTML页面来实现这一点,但为了实现这一点,我需要在Firefox下为JavaScript提供MySQL绑定。我已经有了一个低于100 LOC的工作原型,但它需要一个web服务器,而且由于这个问题无法解决的原因,它无法工
编辑:答案似乎是“可以做到,但会很痛苦”。因为我的选择之一是将所有数据作为文件输出(丑陋,也不太灵活,但它会起作用),所以我想我不会继续这样做。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,你已经把自己绑在了相当多的东西上。因为你让我“哼”了,哦,克鲁德。你在开玩笑。唯一的