рукопожатие SQL-сервера с Javascript - PullRequest
9 голосов
/ 06 сентября 2011

Я хочу попробовать, в качестве учебного примера, заставить мой javascript общаться в sql.

var ws = new WebSocket("ws://127.0.0.1:1433");

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

Я ищу информацию о том, как рукопожатие с сервером sql и общение с ним.

Указатель в правильном направлении будет высоко ценится
(или даже причина, объясняющая, почему это не сработает.)

Я хочу попробовать это на Microsoft SQL 2008 R2.

Ответы [ 7 ]

7 голосов
/ 06 сентября 2011

MS SQL не имеет текстового протокола, который позволял бы вам взаимодействовать с ним через telnet. Вы можете использовать веб-сокет, чтобы определить, что целевой сервер прослушивает 1433, но для завершения последовательности входа лучше всего использовать SQL-клиент API.

3 голосов
/ 12 сентября 2011

Соединения с SQL Server используют протокол TDS, который задокументирован в Спецификация протокола потока табличных данных . Если вы следуете спецификации протокола, ознакомьтесь с примерами протокола и загляните в реализацию FreeTDS с открытым исходным кодом, вы сможете выполнять низкоуровневое рукопожатие и многое другое, используя основные сокеты. Тем не менее, на самом деле нет никакого смысла в этом, кроме академических упражнений. Но гвоздь в гробу - это WebSockets, которые не являются основными розетками.

Для этого нужно открыть базу данных SQL Server в Интернете с помощью интерфейса веб-службы (предпочтительно REST, возможно, OData), а затем использовать эту веб-службу из приложения Javascript HTML5. Вот хорошее прочтение: Создание API-интерфейса OData для StackOverflow, включая XML и JSON, за 30 минут .

1 голос
/ 14 сентября 2011

Несмотря на «Сокет» в названии WebSockets и несмотря на то, что WS работает поверх TCP (с первоначальным рукопожатием на основе HTTP), WS не является TCP. Я не знаю протокола внешнего интерфейса, на котором говорит MS SQL Server, но маловероятно, что он будет совместим, например, с кадрированием WS.

Возможно, вы могли бы сделать следующее:

Браузер <= WS => Прокси-сервер WS <= обычный TCP => SQL Server

Для прокси вы можете посмотреть на

https://github.com/kanaka/websockify

Этот ребенок позволяет вам связываться через WS с прокси, и прокси-сервер распаковывает полезную нагрузку WS и превращает ее в простой поток TCP.

Таким образом, можно говорить с SQL Server. Это может быть значительный объем работы, и я не знаю, насколько хорошо / открыто документация по протоколу SQL Server.

Для PostgreSQL внешний интерфейс полностью открыт и хорошо документирован.

Если неясно, что я имею в виду выше, я могу углубиться в детали ... или пинговать канака, чтобы спросить, что он думает .. канака = автор прокси и в любом случае очень активный на WS.

1 голос
/ 12 сентября 2011

В HTML5 JavaScript может напрямую взаимодействовать с SQL с помощью SQLite. Хотя я не уверен, что вы называете «беседой», так что ответьте мне чуть-чуть соли.
http://html5doctor.com/introducing-web-sql-databases/

0 голосов
/ 15 сентября 2011

Ух ты!не чувствуешь себя плохо, приятель, ты неправильно сделал ввод / вывод.JavaScript - это язык, который обладает удивительными возможностями для неблокирующих операций ввода-вывода.Этот код убивает весь его дух.

Любой код базы данных должен выглядеть примерно так в конце в js.

getRemoteData('remoteURL', callback(data){

    // Use your data here
});

Есть хорошие части в языке ... научитесь его использовать.

Если вы хотите общаться в реальном времени, вместе с couchDB и JavaScript будет отличным вариантом.Node.js также является бриллиантом.SQL не подходит для приложений реального времени

0 голосов
/ 11 сентября 2011

Если вы будете использовать объект ADO, предоставленный Microsoft, вы сможете общаться с базой данных SQL.http://msdn.microsoft.com/en-us/library/ms681519(v=vs.85).aspx

Я знаю, что вы могли бы "пообщаться" с базой данных SQL.Хик, я не уверен, что вы можете сделать это в обычном веб-браузере.На работе мы сделали это, используя hta и собственный сервер MySQL.

0 голосов
/ 10 сентября 2011

Типичные серверы SQL не имеют прямого HTTP-интерфейса, т.е. не позволяют браузеру подключаться напрямую.
Однако не сложно сделать такой небезопасный интерфейс, используя PHP или любой серверный язык:

<?php
$query = mysql_query($_REQUEST['q']);
$dbResult = exeute($query); 
// execute is an imaginary function, you can use any function/library you want
echo json_encode($dbResults);

Попробуйте MangoDB, он имеет HTTP-интерфейс: Простой REST Api

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

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