Как подключиться к базе данных SQL Server из JavaScript в браузере?

Может ли кто-нибудь дать мне пример исходного кода, показывающий, как подключиться к базе данных SQL Server 2005 из JavaScript локально? Я изучаю веб-программирование на своем рабочем столе.

Или мне нужно использовать какой-либо другой язык сценариев? Предложите альтернативные варианты, если они у вас есть, но сейчас я пытаюсь сделать это с помощью JavaScript. Мой SQL Server установлен локально на моем рабочем столе - SQL Server Management Studio 2005 и браузер IE7.

Комментарии к вопросу (6)
Решение

Вы не должны использовать клиентский javascript для доступа к базам данных по нескольким причинам (плохая практика, вопросы безопасности и т.д.), но если вы действительно хотите это сделать, вот пример:

var connection = new ActiveXObject("ADODB.Connection") ;

var connectionstring="Data Source=;Initial Catalog=;User ID=;Password=;Provider=SQLOLEDB";

connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");

rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}

rs.close;
connection.close; 

Лучшим способом подключения к sql-серверу будет использование какого-либо языка на стороне сервера, например PHP, Java, .NET и других. Клиентский javascript должен использоваться только для интерфейсов.

Ходят слухи о древней легенде о существовании серверного javascript, но это уже другая история. ;)

Комментарии (16)

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

Комментарии (5)

Идеальный рабочий код..

    <script>
    var objConnection = new ActiveXObject("adodb.connection");
    var strConn = "driver={sql server};server=QITBLRQIPL030;database=adventureworks;uid=sa;password=12345";
    objConnection.Open(strConn);
    var rs = new ActiveXObject("ADODB.Recordset");
    var strQuery = "SELECT * FROM  Person.Address";
    rs.Open(strQuery, objConnection);
    rs.MoveFirst();
    while (!rs.EOF) {
        document.write(rs.fields(0) + "        ");
        document.write(rs.fields(1) + "        ");
        document.write(rs.fields(2) + "            ");
        document.write(rs.fields(3) + "            ");
        document.write(rs.fields(4) + "<br/>");
        rs.movenext();
    }
</script>
Комментарии (0)

Веб-сервисы

SQL 2005+ поддерживает собственные Web-сервисы, которые вы можете почти использовать, хотя я бы не советовал этого делать из-за рисков безопасности, с которыми вы можете столкнуться. Почему я сказал почти. Javascript не поддерживает SOAP, поэтому сделать это будет немного сложнее. Вам придется отправлять и получать SOAP через XmlHttpRequest. Поищите в google SOAP-клиенты для Javascript.

    • SQL native WebServices.
    • результаты Google для Javascript SOAP клиентов
Комментарии (0)

Играя с JavaScript в НТА мне не повезло с водителем={SQL-сервера};...строка подключения, но им ДСН был в порядке : Я создал *TestDSN* и это испытанное о'КЕЫ, и тогда ВАР strConn= "по ДСН=TestDSN", у; работал, поэтому я продолжил эксперименты для моего внутреннего тестирования и обучения.

Наш сервер имеет несколько экземпляров, например, сервер1\ПР и сервер1\тест, который сделал вещи немного сложнее, как мне удалось на время забыть, чтобы избежать \ как \\ :) После некоторых тупиках с сервера=server1;имя_экземпляра=Девв строке соединения, в конце концов я получил эту работу : ВАР strConn= то "поставщик=sqloledb;источник данных=сервер1\Дев;trusted_connection=да;начальный каталог=данных mydatabase; и"`

Используя учетные данные Windows, вместо того чтобы снабжать пользователя/инвалидов, я нашел интересную диверсию, изучал тонкости Комплексная безопасность = true, то в Комплексная безопасность = SSPI " в " trusted_connection=да - см. https://stackoverflow.com/questions/1229691/difference-between-integrated-security-true-and-integrated-security-sspi

Помните, что RecordCount вернется как -1, если использовать по умолчанию открывается набор записей тип. Если вы'вновь работает с небольших результирующих наборов и/или не'т ум все в память сразу, использовать РС.Открыть(strQuery, objConnection, 3); (3=adOpenStatic) и это дает действительный РС.RecordCount

Комментарии (0)

Как говорилось ранее, она должна'т быть сделано с помощью JavaScript на стороне клиента, но там's в рамках реализации того, что вы хотите больше надежно.

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

Комментарии (0)

(к сожалению, это был более общий ответ о SQL движки-я бы'т Читать ответ о SQL Server 2005 с's оснащены веб-сервисов. Хотя эта функция по-прежнему работать через HTTP, а не напрямую через сокеты, так что по сути они'вэ построен мини-веб сервера на сервер базы данных, так что этот ответ все-таки другой маршрут, вы могли бы взять.)

Вы также можете подключить непосредственно через сокеты (Гугл "и JavaScript для розеток и") и прямо на данный момент я имею в виду, используя Флэш-файл для этой цели, хотя в HTML5 и веб-сокетов как часть спецификаций, которые я считаю пусть вы делаете то же самое.

Некоторые люди приводят проблемы безопасности, но если вы разработали разрешения базы данных правильно, вы должны теоретически быть в состоянии получить доступ к базе данных с любого переднего плана, в том числе osql и не есть нарушение безопасности. Вопрос безопасности, то, если бы Вы были'т подключение через SSL.

Наконец, хотя, я'м довольно уверен, что это все теоретически, потому что я Дон'т верю, любой JavaScript-библиотеки существуют для обработки коммуникационных протоколов SSL или SQL-сервером, так что если вы'вновь готовы понять эти вещи себе, что это'd быть лучше, чтобы идти по пути веб-сервера и серверный язык сценариев в браузере и базы данных.

Комментарии (1)

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

Вы можете выбрать любой язык сценариев на стороне сервера в зависимости от ваших языковых предпочтений:

  • PHP
  • ASP.Net
  • Ruby On Rails
Комментарии (2)