JavaScript可以与MySQL连接吗?

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脚本并将回显的数据回显给客户端。基本上,根据物理机器分配的语言是:

好。

  • 服务器端:PHP和MySQL。
  • 客户端:HTML / CSS和JavaScript。
  • 这是对我们具有以下功能的MVC模型(模型,视图,控制器)的响应:

    好。

  • 模型:模型是处理数据的模型,在这种情况下,PHP脚本管理变量或访问存储在我们的MySQL数据库中的数据(在这种情况下,将其作为JSON数据发送给客户端)。
  • 视图:视图就是我们所看到的,它应该完全独立于模型。它只需要显示模型中包含的数据,但不应该包含相关数据。在这种情况下,视图使用HTML和CSS。 HTML创建视图的基本结构,而CSS为该基本结构提供形状。
  • 控制器:控制器是我们的模型和视图之间的接口。在这种情况下,使用的语言是JavaScript,它将模型发送给我们的数据作为JSON包并将其放入提供HTML结构的容器中。控制器与模型交互的方式是使用AJAX。我们使用GET和POST方法在服务器端调用PHP脚本,并捕获服务器返回的数据。
  • 对于控制器,我们有一些非常有趣的工具,例如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引擎)一起使用的库。我们使用这些新服务器的方式是:

    好。

  • Node.js和Express:构建服务器的主要框架。我们可以使用几行代码来创建服务器,甚至可以将库用作Express,从而使服务器的创建变得更加容易。借助Node.js和Express,我们将管理客户端向服务器发送的请愿书,并将在适当的页面上对其进行答复。
  • Jade:要创建页面,我们使用模板语言,在本例中为Jade,它使我们能够像编写HTML时一样编写网页,但有所不同(花一点时间但很容易学习)。然后,在服务器的代码中回答客户的请求,我们只需要将Jade代码呈现为"真实的" HTML代码即可。
  • 触控笔:与Jade类似,但适用于CSS。在这种情况下,我们使用中间件功能将手写笔文件转换为页面的真实CSS文件。
  • 然后,我们有很多软件包可以使用NPM(Node.js软件包管理器)安装,并直接在需要它的Node.js服务器中使用(对于那些想学习Node.js的人,请尝试此初学者教程)以获取概述)。在这些软件包中,您有一些可以访问数据库。使用此功能,您可以在服务器端使用JavaScript来访问My SQL数据库。

    好。

    但是,如果要使用Node.js,最好的办法是使用基于JSON文件的新NoSQL数据库(如MongoDB)。它没有像MySQL那样存储表,而是将数据存储在JSON结构中,因此您可以将不同的数据放入每个结构中,例如长数值矢量,而不是为最大的表创建巨大的表。

    好。

    我希望这个简短的说明对您有用,如果您想了解更多有关此的信息,可以在这里使用一些资源:

    好。

  • Egghead:此站点上有很多有关JavaScript及其环境的简短教程。值得一试。并且不时打折。
  • 代码学校:提供有关Chrome开发者工具的免费且非常有趣的课程,以帮助您测试客户端。
  • Codecademy:提供有关HTML,CSS,JavaScript,jQuery和PHP的免费课程,您可以通过在线示例进行学习。
  • 10gen教育:在各种语言的教程中,您需要了解有关MongoDB的所有知识。
  • W3Schools:这是一本有关所有这些的教程,您可以将其用作参考位置,因为它有许多确实有用的简短代码示例。
  • Udacity:一个提供有关不同主题的免费视频课程的地方,还有一些有趣的Web开发课程,我更喜欢使用有关JavaScript的3D图形的出色WebGL课程。
  • 好。

    更新!

    好。

    现在,拥有一个节点服务器,如果要与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插件。

    MySQL 5.7 – HTTP Plugin for MySQL

    我现在只是在搜索它,这使我想到了这个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);
       ?> }