Может ли JavaScript соединиться с MySQL?

78

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

  • 0
    нет, если вы не говорите о JavaScript в браузере.
  • 2
    Как насчет серверного JavaScript (например, через Rhino)? мы можем подключиться к базе данных?
Показать ещё 3 комментария

18 ответов

17
Лучший ответ

Нет, JavaScript не может напрямую подключаться к MySQL. Но вы можете смешать JS с PHP, чтобы сделать это.

JavaScript - это клиентский язык, и ваша база данных MySQL будет запущена на сервере

  • 2
    Спасибо, как бы я это сделал?
  • 79
    Небольшое замечание: тот факт, что JavaScript работает на стороне клиента, НИЧЕГО не имеет отношения к тому, что он не может подключиться к серверу базы данных. Вполне возможно (хотя и маловероятно), что в будущей версии языка будут добавлены API для доступа к удаленным базам данных.
Показать ещё 5 комментариев
65

Клиентский JavaScript не может обращаться к MySQL без какого-либо моста. Но приведенные выше смелые утверждения о том, что JavaScript - это просто язык на стороне клиента, неверны - JavaScript может работать как на стороне клиента, так и на стороне сервера, как на Node.js.

Node.js может обращаться к MySQL через нечто вроде https://github.com/sidorares/nodejs-mysql-native

Возможно, вы также разработали что-то, используя Socket.IO

Вы хотели спросить, может ли клиентское JS-приложение получить доступ к MySQL? Я не уверен, существуют ли такие библиотеки, но они возможны.

EDIT. С момента написания у нас теперь есть MySQL Cluster:

Драйвер JavaScript для MySQL Cluster для Node.js - это то, на что он похож, - его соединитель, который можно вызвать непосредственно из вашего кода JavaScript для чтения и записи ваших данных. Поскольку он напрямую обращается к узлам данных, нет дополнительной задержки от прохождения через сервер MySQL и необходимо преобразовать из JavaScript-кода//объекты в операции SQL. Если по какой-то причине вы предпочитаете, чтобы он проходил через сервер MySQL (например, если вы храните таблицы в InnoDB), то это можно настроить.

40

THEN

Как я понимаю вопрос и исправлю меня, если я ошибаюсь, это относится к классической модели сервера с JavaScript только на стороне клиента. В этой классической модели с LAMP серверами (Linux, Apache, MySQL, PHP) языком, связанным с базой данных, является PHP, поэтому для запроса данных в базу данных вам нужно написать PHP-скрипты и echo возвращаемые данные клиенту. В основном, распределение языков по физическим машинам:

  • Серверная сторона: PHP и MySQL.
  • Клиентская сторона: HTML/CSS и JavaScript.

Это соответствует модели MVC (Model, View, Controller), где у нас есть следующие функции:

  • МОДЕЛЬ:. Модель относится к данным, в данном случае, скриптам PHP, которые управляют переменными или к которым относятся данные, хранящиеся в данном случае в нашей базе данных MySQL, и отправляйте их как данные JSON для клиента.
  • VIEW: Вид - это то, что мы видим, и оно должно быть полностью независимым от модели. Он просто должен показать данные, содержащиеся в модели, но не должен иметь соответствующих данных. В этом случае представление использует HTML и CSS. HTML, чтобы создать основную структуру представления и CSS, чтобы придать форму этой базовой структуре.
  • КОНТРОЛЛЕР: Контроллер - это интерфейс между нашей моделью и нашим представлением. В этом случае используемым языком является JavaScript, и он принимает данные, которые модель отправляет нам как пакет JSON, и помещает их в контейнеры, которые предлагают структуру HTML. То, как контроллер взаимодействует с моделью, использует AJAX. Мы используем методы GET и POST для вызова скриптов PHP на стороне сервера и для поиска возвращаемых данных с сервера.

Для контроллера у нас есть действительно интересные инструменты, такие как jQuery, как "низкоуровневая" библиотека для управления структурой HTML (DOM), а затем новые, более высокоуровневые как Knockout.js, которые позволяют создавать наблюдателей, которые соединяют различные элементы DOM, обновляя их при возникновении событий. Существует также Angular.js от Google, который работает аналогичным образом, но, кажется, является полной средой. Чтобы помочь вам выбрать среди них, здесь есть два отличных анализа двух инструментов: Нокаут против Angular.js и Knockout.js против Angular.js. Я все еще читаю. Надеюсь, они вам помогут.

NOW

В современных серверах на базе Node.js мы используем JavaScript для всего. Node.js - это среда JavaScript со многими библиотеками, которые работают с движком Google V8, Chrome JavaScript. Как мы работаем с этими новыми серверами:

  • Node.js и Express: Основной кадр, на котором построен сервер. Мы можем создать сервер с несколькими строками кода или даже использовать библиотеки Express, чтобы сделать еще проще создание сервера. С помощью Node.js и Express мы будем обращаться с ходатайствами к серверу от клиентов и ответим на них соответствующими страницами.
  • Jade: Чтобы создать страницы, мы используем язык шаблонов, в данном случае Jade, который позволяют нам писать веб-страницы, поскольку мы пишем HTML, но с различиями (это занимает немного времени, но легко учиться). Затем, в коде сервера, чтобы отвечать на запросы клиентов, нам просто нужно отобразить код Jade в "настоящий" HTML-код.
  • Stylus: Подобно Jade, но для css. В этом случае мы используем функцию промежуточного программного обеспечения для преобразования файла стилуса в настоящий файл css для нашей страницы.

Затем у нас есть много пакетов, которые мы можем установить с помощью NPM (Node.js менеджер пакетов) и использовать их непосредственно на нашем сервере Node.js, просто требуя его (для тех из вас, кто хочет узнать Node.js, попробуйте начинающий учебник). И среди этих пакетов у вас есть некоторые из них для доступа к базам данных. Используя это, вы можете использовать JavaScript на стороне сервера для доступа к базам данных My SQL.

Но самое лучшее, что вы можете сделать, если собираетесь работать с Node.js, - это использовать новые базы данных NoSQL, такие как MongoDB, основанный на файлах JSON. Вместо хранения таких таблиц, как MySQL, он хранит данные в структурах JSON, поэтому вы можете поместить разные данные внутри каждой структуры, такие как длинные числовые векторы, вместо этого создавая огромные таблицы для размера самого большого.

Надеюсь, это краткое объяснение станет для вас полезным, и если вы хотите узнать больше об этом, здесь у вас есть ресурсы, которые вы можете использовать:

  • Egghead. Этот сайт полон замечательных коротких руководств по JavaScript и его окружению. Это стоит попробовать. И время от времени делают скидки.
  • Школа кодов: со свободным и очень интересным курсом о инструментах Chrome Developer, которые помогут вам протестировать клиента сторона.
  • Codecademy: со свободными курсами по HTML, CSS, JavaScript, jQuery и PHP, которые вы можете следуйте онлайн-примерам.
  • 10gen Education: со всем, что вам нужно знать о MongoDB в учебниках для разных языков.
  • W3Schools. У этого есть учебники обо всем этом, и вы можете использовать его в качестве ссылочного места, потому что у него очень много коротких примеров кода действительно полезно.
  • Udacity: место с бесплатными видеокурсами по различным темам с несколькими интересными о веб-разработке и мой предпочтительный, потрясающий курс WebGL для 3D-графики с JavaScript.

UPDATE!

Прямо сейчас, имея сервер Node, если вы хотите общаться с базой данных MySQL, вы можете использовать библиотеку с именем mysql. Вы можете создавать запросы так же, как и с PHP, и можете попробовать с помощью

  • 0
    Хороший подробный ответ, объясняющий механику.
  • 0
    Спасибо :) Я только что добавил обновление в конце ответа, чтобы решить проблему. Вы можете использовать сервер узлов с библиотекой «mysql», и я добавил ссылку на созданный мной генератор API, который вы можете использовать для запуска нового проекта API. Надеюсь, поможет.
Показать ещё 1 комментарий
8

Я думаю, вам нужно добавить что-то вроде PHP в уравнение. PHP для взаимодействия с базой данных, а затем вы можете сделать AJAX-вызовы с помощью Javascript.

6

Бит поздно, но недавно я узнал, что MySql 5.7 получил HTTP-плагин, который пользователь может напрямую подключиться к mysql.

Ищите клиент Http для mysql 5.7

6

Простой ответ: нет.

JavaScript - это клиентский язык, который работает в браузере (node.js), а MySQL - это серверная технология который запускается на сервере.

Это означает, что вы обычно используете серверный язык, например ASP.NET или PHP, для подключения к базе данных.

  • 0
    Javascript (на стороне клиента, в форме браузера) используется каждый день для подключения к серверным технологиям (Apache, Nginx, PHP, NodeJS и т. Д.), Работающим на сервере. Само определение сервера / клиента требует, чтобы «разрыв» между ними был преодолимым.
5

ДА? Посмотрите метеор. Ссылки:

http://meteor.com/screencast и http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/ p >

Я не понимаю, как это делается. Но Nettuts + помещает это в раздел javascript-ajax, возможно, происходит магия.

Он также показывает способ подключения и вставки в MongoDB с помощью JS, например:

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});
  • 1
    «Вы можете заменить другую базу данных для MongoDB, предоставив драйвер базы данных на стороне сервера и / или кэш на стороне клиента, который реализует альтернативный API. Mongo-aliveata является хорошей отправной точкой для такого проекта». - docs.meteor.com
4

Да. Для MySQL есть HTTP-плагин.

http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/

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

3

В зависимости от вашей среды вы можете использовать Rhino для этого, см. Rhino website. Это дает вам доступ ко всем библиотекам Java из JavaScript.

1

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

0

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

И это мой примерный мост, написанный на С# с помощью websocket-sharp library:

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

Обычно вам нужен скриптовый язык на стороне сервера, например PHP, для подключения к MySQL, однако, если вы просто делаете быстрый макет, вы можете использовать http://www.mysqljs.com для подключения к MySQL из Javascript, используя следующий код:

MySql.Execute(
    "mysql.yourhost.com", 
    "username", 
    "password", 
    "database", 
    "select * from Users", 
    function (data) {
        console.log(data)
});

Следует отметить, что это не безопасный способ доступа к MySql и подходит только для частных демонстраций или сценариев, в которых исходный код не может быть доступен конечным пользователям, например, в приложениях Phonegap iOS.

  • 0
    После быстрой проверки это создает угрозу кражи учетных данных базы данных, что видно из строки 6 этого сценария, в которой указано, что var strSrc = "http://mysqljs.com/sql.aspx?";
  • 0
    @Dragas - Это верно. У javascript нет собственного способа подключения к базе данных mysql, поэтому DLL-библиотека mysql размещается на стороне сервера, следовательно, вызывается AJAX. Это также означает, что если вы используете брандмауэр на порту 3306, вам нужно открыть его для входящих подключений от mysqljs.com
0

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

0

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

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

0

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);
  • 1
    где запрос MySQL в этом примере?
  • 0
    @ Майкл: Отличный вопрос.
0

Нет.

Вам нужно написать оболочку в 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-инъекциях, пожалуйста.

-1

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

-5

Вы можете добавить соединение 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
    На самом деле, это не ответ. Вопрос был в том, Can JavaScript connect with MySQL? ,
  • 0
    Это ноль процентов, относящихся к заданному вопросу. Автор вопроса был очень конкретным в отношении Javascript.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню