309

JavaScript からローカルで SQL Server 2005 データベースに接続する方法を示すサンプル ソース コードを教えてください。デスクトップでWebプログラミングを学んでいます。

または、他のスクリプト言語を使用する必要がありますか? 代替案がある場合はいくつか提案してください。しかし、私は現在、JavaScript でそれを実行しようとしています。私の SQL Server はデスクトップにローカルにインストールされています — SQL Server Management Studio 2005 と IE7 ブラウザー。

4

8 に答える 8

756

いくつかの理由 (悪い習慣、セキュリティ上の問題など) から、クライアント JavaScript を使用してデータベースにアクセスするべきではありませんが、本当にこれを行いたい場合は、次の例を参照してください。

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

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<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 の存在についての古い伝説の噂もありますが、これは別の話です。;)

于 2009-05-13T12:29:45.413 に答える
22

接続文字列を共有すると、Web サイトが非常に多くの脆弱性にさらされるため、単純にパッチを適用することはできません。セキュリティを確保するには、別の方法を使用する必要があります。さもなければ、あなたのサイトを利用するために大勢の視聴者に門戸を開いていることになります.

于 2011-08-21T21:52:01.577 に答える
12

完璧な作業コード..

    <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) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        document.write(rs.fields(1) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        document.write(rs.fields(2) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    ");
        document.write(rs.fields(3) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    ");
        document.write(rs.fields(4) + "<br/>");
        rs.movenext();
    }
</script>
于 2014-04-01T14:39:22.797 に答える
11

ウェブサービス

SQL 2005+ は、直面する可能性のあるセキュリティ リスクのために、私はお勧めしませんが、ほぼ使用できるネイティブ Web サービスをサポートしています。なぜ私はほとんどと言ったのですか?Javascript は SOAP ネイティブではないので、実際に作成するのはもう少し複雑です。経由で SOAP を送受信する必要がありますXmlHttpRequest。Google で Javascript SOAP クライアントを確認してください。

于 2009-05-13T12:37:47.553 に答える
5

HTA で JavaScript をいじるdriver={SQL Server};...接続文字列はうまくいきませんでしたが、名前付きの DSN は問題ありませんでした。TestDSN
をセットアップして問題なくテストし、機能したので、社内でのテストと学習の目的で実験を続けました。var strConn= "DSN=TestDSN";

私たちのサーバーには、 server1\devserver1\Testなどのいくつかのインスタンスが実行されており、 \asをエスケープするのを忘れて時間を無駄にすることができたため、少し複雑になりました\\:)接続文字列で
いくつかの行き止まりの後server=server1;instanceName=dev、最終的にこれを取得しました動作するもの:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

Integrated Security = trueユーザー/パスワードを提供するのではなく、Windows 資格情報を使用して、 v Integrated Security = SSPIvの機微を発見する興味深い転用を発見しました- Integrated Security = True と Integrated Security = SSPI の違いをTrusted_Connection=Yes参照してください。

-1デフォルトのadOpenForwardOnlyタイプを使用しているかのように RecordCount が返されることに注意してください。小さな結果セットで作業している場合、および/または一度にメモリ全体を気にしない場合は、rs.Open(strQuery, objConnection, 3); (3=adOpenStatic)を使用すると、有効なrs.RecordCount

于 2014-05-01T12:45:47.723 に答える
3

クライアント側のJavaScriptからSQLサーバーに接続できるとは思いません。データベースと対話できるWebアプリケーションを構築し、JavaScriptのみを使用してユーザーインターフェイスをより適切に操作できるようにするために、サーバー側の言語を選択する必要があります。

言語設定に基づいて、任意のサーバー サイド スクリプト言語を選択できます。

  • PHP
  • ASP.Net
  • ルビーオンレール
于 2009-05-13T12:29:30.250 に答える
3

(申し訳ありませんが、これは SQL バックエンドに関するより一般的な回答でした。SQL Server 2005 の WebServices 機能に関する回答は読んでいませんでした。ただし、この機能は、ソケットを介して直接ではなく HTTP を介して実行されるため、基本的には構築されています。ミニWebサーバーをデータベースサーバーに接続するため、この答えはまだ別の方法です.)

ソケット (google "javascript sockets") を使用して直接接続することもできます。この時点で直接接続するということは、この目的のために Flash ファイルを使用することを意味しますが、HTML5 には仕様の一部として Web ソケットがあり、同じことができると私は信じています。

セキュリティの問題を指摘する人もいますが、データベースのアクセス許可を正しく設計した場合、理論的には、OSQL を含む任意のフロント エンドからデータベースにアクセスでき、セキュリティ違反は発生しないはずです。したがって、セキュリティの問題は、SSL 経由で接続していない場合に発生します。

最後に、SSL や SQL Server の通信プロトコルを処理するための JavaScript ライブラリが存在するとは思わないため、これはすべて理論上のものであると確信しています。ブラウザーとデータベースの間に Web サーバーとサーバー側のスクリプト言語を配置する方法をお勧めします。

于 2009-05-13T13:01:07.843 に答える
3

前に述べたように、クライアント側の Javascript を使用して行うべきではありませんが、必要なものをより安全に実装するためのフレームワークがあります。

Nodejs は、javascript でサーバー接続をコーディングできるフレームワークです。Nodejs を調べてみると、データベースとの通信と必要なデータの取得についてもう少し学ぶことができるでしょう。

于 2014-07-14T12:22:46.180 に答える