Есть ли привязки JavaScript для MySQL? - PullRequest
6 голосов
/ 18 ноября 2008

Я хочу получить доступ к базе данных MySQL напрямую из кода JavaScript на странице HTML в Firefox.

Существует ли такая библиотека?

Чтобы быть очень ясным, CGI + Ajax не будет работать

Краткая справка: я хочу создать что-то вроде интерфейса GUI для базы данных MySQL (это не то, что есть, но достаточно близко). Я думаю сделать это как локальную HTML-страницу с использованием JavaScript, но для этого мне понадобятся привязки MySQL для JavaScript под Firefox. У меня уже есть работающий прототип в менее чем 100 LOC, но он требует веб-сервера, и по причинам, которые выходят за рамки этого вопроса, это не будет работать.

ПРИМЕЧАНИЕ: база данных и код JavaScript будут работать локально и не предназначены для публичной страницы. Фактически файл HTML будет загружен как файл: //// file. Единственная причина, по которой я использую JavaScript, заключается в том, что это единственная доступная система для работы с GUI там, где она мне нужна.

Я готов установить плагины, библиотеки DLL, Windows-зависимые компоненты или что-то еще, чтобы это не сработало.


Редактировать: Похоже, ответ таков: «Это можно сделать, но это будет больно». Поскольку один из моих вариантов - просто выбросить все данные в виде файлов (некрасиво и не слишком гибко, но это сработает), я думаю, что я не собираюсь заниматься этим.

Ответы [ 9 ]

4 голосов
/ 18 ноября 2008

JavaScript-код живет внутри браузера. Он может делать HTTP-запросы извне, но не намного. Таким образом, вы не сможете связываться с программой, работающей локально. Если MySQL действительно предоставляет службу HTTP, это может быть возможно, но это не так.

Возможно, вы сможете найти плагин для Firefox, который предоставляет MySQL API для JavaScript, но я не знаю ни одного такого плагина.

Если вам не нужен MySQL, а нужна только база данных, доступная из кода JavaScript, взгляните на Google Gears . Это плагин для Firefox / Internet Explorer, который предоставляет базу данных SQLite и несколько других полезностей.

Если вы дадите больше информации о том, что вы пытаетесь построить, мы могли бы дать вам лучший совет ...

2 голосов
/ 19 ноября 2008

Javascript может получить доступ к MySQL ... но обычно только на сервере. Я сделал это с помощью Rhino, Java-интерпретатора на основе Java. Просто включен драйвер 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');      
};
2 голосов
/ 18 ноября 2008

К сожалению, вам нужен сервер. Или, если вы знаете, как и готовы заблокировать платформу / браузер, вы можете написать плагин для вашего браузера (насколько я знаю, DLL для Internet Explorer не существует, поэтому вам придется написать его самостоятельно). ).

Возможно, вы захотите заглянуть на небольшой сервер, который не требует настройки. Я изменил сервер Lua Xavante по той же причине, что и ваш, поэтому он работает без внешних зависимостей, поэтому я могу установить / удалить приложение с помощью одной копии / вставки.

1 голос
/ 18 ноября 2008

Вам нужен HTTP-сервис, который предоставляет данные, которые вы хотите получить с помощью JavaScript.

Небольшой AJAX-ориентированный серверный скрипт (PHP, Perl, Ruby и т. Д.), Который принимает несколько параметров и выполняет запрос MySQL, отправляя данные клиенту дружественным к HTTP и JavaScript способом (например, в виде изображения). / JPEG или JSON).

Вы не сможете настроить что-либо полезное (работающее межбраузерное решение), которое сделает MySQL доступным для JavaScript. JavaScript может делать HTTP, и это все. Адаптировать на стороне сервера.

0 голосов
/ 14 ноября 2013

Я знаю, что это старая ветка, но я думаю, что она все еще актуальна.

Я использовал backbone.js как клиентскую библиотеку в браузере. Это упрощает (почти упрощает) доступ к данным из браузера.

Это зависит от служб RESTful на сервере, и они могут быть легко предоставлены. В качестве примера вы можете использовать node.js, phpwebsockets или socket.io

НТН

0 голосов
/ 28 марта 2012

Если вы используете node.js, я думаю, вы могли бы взглянуть на это. http://nodejsdb.org/

0 голосов
/ 28 марта 2011

Конечно, если javascript может сделать вызов на сервер, он может сделать вызов на локальный IP-адрес (192.168.x.x), и это может быть обработано с помощью программы, которая прослушивает определенный порт? Все, что нужно сделать программе - взаимодействовать с базой данных, найти информацию и передать ее обратно в javascript?

0 голосов
/ 18 ноября 2008

Интересный вопрос. Но вы наверняка снимите много барьеров, выбрав язык / среду с множеством добровольных ограничений для ограничения доступа к базовой системе ...

Мне нравится предложение Роберта, Ксаванте действительно легкий.

В противном случае, я думаю, что жизнеспособным решением может быть использование Java-апплета с доступом JDBC. Я думаю, вам нужно будет подписать апплет, что не должно быть проблемой.

Я искал java-апплет jdbc в Google и увидел много многообещающих названий. IBM предоставляет исходный код такого апплета (для доступа к DB2, но он должен легко адаптироваться).

[РЕДАКТИРОВАТЬ] Есть еще один способ, чтобы обернуть mysqllib.dll DLL-библиотекой XPCOM, как описано в Собственный код в javascript . Не знаю, как на самом деле это сделать, но, возможно, это поможет вам начать.

0 голосов
/ 18 ноября 2008

Я не могу дать вам полный ответ, но вот общая идея, как вы можете сделать это с помощью только MySQL + Internet Explorer + JavaScript (не проверено):

В JavaScript вы можете вызвать приложение Windows, используя

var myshell = new ActiveXObject( "WScript.shell" );
myshell.run( program names );

Таким образом, идея состоит в том, чтобы вызвать mysql.exe с операторами SQL, хранящимися в файле SQL, а затем перехватить и проанализировать вывод:

mysql.exe -h localhost -u root dbo < script.sql > output.txt

Эта идея не без проблем:

  • вам нужно изменить файл SQL перед вызовом mysql.exe
  • вам нужно открыть и разобрать выходной файл

Как я упоминал выше, я ничего не тестировал, поэтому вся эта идея может даже не сработать ...

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