Can JavaScript connect with MySQL?
JavaScript可以与MySQL连接吗? 如果是这样,怎么办?
如果没有某种桥接,客户端JavaScript将无法访问MySQL。但是以上关于JavaScript只是一种客户端语言的粗体说法是错误的-JavaScript可以像Node.js一样在客户端和服务器端运行。
Node.js可以通过https://github.com/sidorares/node-mysql2之类的东西访问MySQL
您还可以使用Socket.IO开发某些东西
您是否要问客户端JS应用程序是否可以访问MySQL?我不确定是否存在这样的库,但是它们是可能的。
编辑:自编写以来,我们现在有了MySQL Cluster:
The MySQL Cluster JavaScript Driver for Node.js is just what it sounds like it is – it’s a connector that can be called directly from your JavaScript code to read and write your data. As it accesses the data nodes directly, there is no extra latency from passing through a MySQL Server and need to convert from JavaScript code//objects into SQL operations. If for some reason, you’d prefer it to pass through a MySQL Server (for example if you’re storing tables in InnoDB) then that can be configured.
-
JSDB为数据库提供了JS接口。
-
来自sindresorhus的Node.js精选数据库软件包集。
然后
好。
据我了解的问题,如果我错了,请纠正我,它是指仅在客户端使用JavaScript的经典服务器模型。在这种经典模型中,对于LAMP服务器(Linux,Apache,MySQL,PHP),与数据库联系的语言是PHP,因此,要向数据库请求数据,您需要编写PHP脚本并将回显的数据回显给客户端。基本上,根据物理机器分配的语言是:
好。
这是对我们具有以下功能的MVC模型(模型,视图,控制器)的响应:
好。
对于控制器,我们有一些非常有趣的工具,例如jQuery,它是控制HTML结构(DOM)的"低级"库,然后是Knockout.js等更高级的新工具,使我们可以创建连接不同DOM元素的观察者事件发生时更新它们。 Google还提供了Angular.js,它的工作方式与此类似,但似乎是一个完整的环境。为了帮助您进行选择,这里对这两个工具进行了两个出色的分析:Knockout vs. Angular.js和Knockout.js vs. Angular.js。我还在看书。希望他们能帮助您。
好。
现在
好。
在基于Node.js的现代服务器中,我们对所有内容都使用JavaScript。 Node.js是一个JavaScript环境,其中包含许多可与Google V8(Chrome JavaScript引擎)一起使用的库。我们使用这些新服务器的方式是:
好。
然后,我们有很多软件包可以使用NPM(Node.js软件包管理器)安装,并直接在需要它的Node.js服务器中使用(对于那些想学习Node.js的人,请尝试此初学者教程)以获取概述)。在这些软件包中,您有一些可以访问数据库。使用此功能,您可以在服务器端使用JavaScript来访问My SQL数据库。
好。
但是,如果要使用Node.js,最好的办法是使用基于JSON文件的新NoSQL数据库(如MongoDB)。它没有像MySQL那样存储表,而是将数据存储在JSON结构中,因此您可以将不同的数据放入每个结构中,例如长数值矢量,而不是为最大的表创建巨大的表。
好。
我希望这个简短的说明对您有用,如果您想了解更多有关此的信息,可以在这里使用一些资源:
好。
好。
更新!
好。
现在,拥有一个节点服务器,如果要与MySQL数据库通信,可以使用一个名为mysql的库。您可以像使用PHP一样创建查询,也可以使用我创建的API生成器尝试进行查询,然后可以使用NPM下载。它具有一个向导,可让您选择要使用的数据库。
好。
我希望它可以帮助您开始。
好。
玩得开心!
好。
好。
不,JavaScript无法直接连接到MySQL。但是您可以将JS与PHP混合使用。
JavaScript是一种客户端语言,您的MySQL数据库将在服务器上运行
我认为您需要在方程式中添加类似PHP的内容。 PHP与数据库进行交互,然后可以使用Javascript进行AJAX调用。
有点晚了,但最近我发现MySql 5.7通过http插件通过了该插件,用户现在可以直接连接到mysql。
寻找mysql 5.7的Http Client
简单的答案是:不会。
JavaScript是在浏览器中运行的客户端语言(尽管使用了node.js),而MySQL是在服务器上运行的服务器端技术。
这意味着您通常使用服务器端语言(例如ASP.NET或PHP)来连接数据库。
是?看看流星。链接:
http://meteor.com/screencast和http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/
我不知道该怎么做。但是Nettuts +将此内容放在javascript-ajax部分中,也许发生了魔术。
它还显示了使用JS连接和插入MongoDB的某种方式,如下所示:
1 2 3 4 | Products.insert({Name :"Hammer", Price : 4.50, InStock : true}); Products.insert({Name :"Wrench", Price : 2.70, InStock : true}); Products.insert({Name :"Screw Driver", Price : 3.00, InStock : false}); Products.insert({Name :"Drill", Price : 5.25, InStock : true}); |
根据您的环境,您可以使用Rhino进行此操作,请参见Rhino网站。这使您可以从JavaScript内访问所有Java库。
是。有一个用于MySQL的HTTP插件。
我现在只是在搜索它,这使我想到了这个stackoverflow问题。您应该能够现在或在不久的将来使用AJAX MySQL数据库(他们声称它尚未准备好投入生产)。
通常,您需要像PHP这样的服务器端脚本语言才能连接到MySQL,但是,如果您只是做一个快速的模型,则可以使用http://www.mysqljs.com从Javascript连接到MySQL,并使用以下代码:如下:
1 2 3 4 5 6 7 8 9 | MySql.Execute( "mysql.yourhost.com", "username", "password", "database", "select * from Users", function (data) { console.log(data) }); |
必须提到的是,这不是访问MySql的安全方法,仅适用于私人演示或最终用户无法访问源代码的场景,例如Phonegap iOS应用程序中的场景。
您可以将AJAX请求发送到MySQL的某些服务器端RESTful包装器,例如DBSlayer,PhpRestSQL或AlsoSQL(对于Drizzle,MySQL的分支)。
如果您未锁定MySQL,则可以切换到PostgreSQL。它支持数据库内部的JavaScript过程(PL / V8)。它非常快速且强大。查看此帖子。
是的你可以。 MySQL连接器使用TCP进行连接,而在JS中,TCP客户端有一个经过修改的版本,称为Websocket。但是您不能使用websocket直接连接到MySQL服务器。您将需要在websocket和mysql之间建立第三方桥梁。它从websocket接收查询,将其发送到mysql,响应结果并重新发送到JS。
这是我用websocket-sharp库用C#编写的示例桥:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | class JSQLBridge : WebSocketBehavior { MySqlConnection conn; protected override void OnMessage(MessageEventArgs e) { if (conn == null) { try { conn = new MySqlConnection(e.Data); conn.Open(); } catch (Exception exc) { Send(exc.Message); } } else { try { MySqlCommand cmd = new MySqlCommand(e.Data, conn); cmd.ExecuteNonQuery(); Send("success"); } catch (Exception exc) { Send(exc.Message); } } } protected override void OnClose(CloseEventArgs e) { if (conn != null) conn.Close(); } } |
JS端:
1 2 3 4 5 | var ws = new WebSocket("ws://localhost/"); ws.send("server=localhost;user=root;database=mydb;"); ws.send("select * from users"); |
您可以通过Java小程序从Javascript连接到MySQL。 JAVA小程序将为MySQL嵌入JDBC驱动程序,从而使您可以连接到MySQL。
请记住,如果要连接到远程MySQL服务器(而不是从其下载Applet的服务器),则需要要求用户授予对Applet的扩展权限。默认情况下,小程序只能连接到从其下载的服务器。
JavaScript无法直接连接到数据库以获取所需的数据,但是您可以使用AJAX。为了简化对服务器的AJAX请求,您可以使用jQuery JS框架http://jquery.com。这是一个小例子
JS:
1 2 3 4 5 6 7 8 9 10 | jQuery.ajax({ type:"GET", dataType:"json", url: '/ajax/usergroups/filters.php', data:"controller=" + controller +"&view=" + view, success: function(json) { alert(json.first); alert(json.second); }); |
PHP:
1 2 3 4 | $out = array(); $out['first'] = 'first value'; $out['second'] = 'second value'; echo json_encode($out); |
没有。
您需要使用PHP编写包装程序,然后导出返回的数据(可能是Json)。永远不要从您的" _GET"中获取SQL代码,因为这称为SQL注入(了解此信息的人将完全控制您的数据库)。
这是我写的一个示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function getJsonData() { global $db; if (!$db->isConnected()) { return"Not connected"; } $db->query("SELECT * FROM entries"); $values = array(); while( $v = $db->fetchAssoc()){ $values[] = $v; } return json_encode($values); } switch (@$_GET["cmd"]){ case 'data': print getJsonData(); exit; default: print getMainScreen(); exit; } |
请了解SQL注入。
我理解了您的问题,我认为您将其与诸如dot.net和java之类的语言混淆,您可以在代码中打开数据库连接。不,JavaScript无法直接连接到MySQL,因为JavaScript是一种客户端脚本语言(Node.js异常)。您需要像RESTful API这样的中间层来访问数据。
您可以使用PHP文件添加mysql连接。以下是PHP文件的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $con = mysql_connect('localhost:3306', 'dbusername', 'dbpsw'); mysql_select_db("(dbname)", $con); $sql="SELECT * FROM table_name"; $result = mysql_query($sql); echo" <table border='1'> <tr> <th>Header of Table name</th> </tr>"; while($row = mysql_fetch_array($result)) { echo"<tr>"; echo"<td>" . $row['(database_column_name)'] ."</td>"; echo"<td>" . $row['database_column_name'] ."</td>"; echo"</tr>"; } echo"</table>"; mysql_close($con); ?> } |