Может ли JavaScript соединиться с MySQL? - PullRequest
101 голосов
/ 11 июня 2010

Может ли JavaScript соединиться с MySQL?Если да, то как?

Ответы [ 18 ]

1 голос
/ 10 апреля 2012

Вы можете отправлять запросы AJAX в некоторые серверные оболочки RESTful для MySQL, такие как DBSlayer , PhpRestSQL или ТакжеSQL (для Drizzle , вилка MySQL).

0 голосов
/ 08 августа 2017

Да, вы можете. Коннекторы MySQL используют TCP для соединения, а в JS есть немного измененная версия TCP-клиента под названием Websocket. Но вы не можете напрямую подключиться к серверу MySQL через websocket. Вам понадобится какой-то сторонний мост между websocket и mysql. Он получает запрос от websocket, отправляет его в mysql, возвращает результат и отправляет его в JS.

И это мой пример моста, написанного на C # с websocket-sharp библиотекой:

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 сторона:

var ws = new WebSocket("ws://localhost/");

ws.send("server=localhost;user=root;database=mydb;");

ws.send("select * from users");
0 голосов
/ 03 июня 2015

Я понял ваш вопрос. Думаю, вы путаете его с такими языками, как dot.net и java, где вы можете открыть соединение с БД в своем коде. Нет, JavaScript не может напрямую подключиться к MySQL, так как JavaScript является клиентским языком сценариев (Exception Node.js). Вам нужен средний уровень, такой как RESTful API, для доступа к данным.

0 голосов
/ 04 февраля 2015

Вы можете добавить соединение MySQL, используя файл PHP.Ниже приведен пример файла PHP.

<?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);
   ?> }
0 голосов
/ 13 июня 2013

Если вы не заблокированы на MySQL, вы можете переключиться на PostgreSQL. Он поддерживает процедуры JavaScript (PL / V8) внутри базы данных. Это очень быстро и мощно. Оформить заказ сообщение .

0 голосов
/ 11 июня 2010

Вы можете подключиться к MySQL из Javascript через апплет JAVA.Апплет JAVA будет включать драйвер JDBC для MySQL, который позволит вам подключаться к MySQL.

Помните, что если вы хотите подключиться к удаленному серверу MySQL (кроме того, с которого вы загрузили апплет), вам нужно будет попросить пользователей предоставить расширенные разрешения для апплета.По умолчанию апплет может подключаться только к серверу, с которого он загружен.

0 голосов
/ 11 июня 2010

JavaScript не может подключиться напрямую к БД для получения необходимых данных, но вы можете использовать AJAX. Чтобы упростить AJAX-запрос к серверу, вы можете использовать jQuery JS framework http://jquery.com. Вот небольшой пример

JS:

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:

$out = array(); 
$out['first']   = 'first value';
$out['second']   = 'second value';
echo json_encode($out);
0 голосов
/ 11 июня 2010

номер

Вам нужно написать оболочку на PHP, а затем экспортировать возвращенные данные (вероятно, как Json). НИКОГДА не получайте от своего «_GET» кода SQL, так как это называется инъекцией SQL (люди, которые изучат это, будут иметь полный контроль над вашей базой данных).

Это пример, который я написал:

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-инъекциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...