Frage

Kann mir jemand einen Beispielquellcode geben, der zeigt, wie man lokal über JavaScript eine Verbindung zu einer SQL Server 2005-Datenbank herstellt?Ich lerne Webprogrammierung auf meinem Desktop.

Oder muss ich eine andere Skriptsprache verwenden?Schlagen Sie einige Alternativen vor, wenn Sie welche haben, aber ich versuche es jetzt mit JavaScript.Mein SQL Server ist lokal auf meinem Desktop installiert – SQL Server Management Studio 2005 und IE7-Browser.

War es hilfreich?

Lösung

Hier darf man sich Client verwenden JavaScript den Zugriff auf Datenbanken aus mehreren Gründen (schlechte Praxis, Sicherheitsfragen, etc.), aber wenn Sie das wirklich tun möchte, ist hier ein Beispiel:

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; 

Eine bessere Art und Weise zu einem SQL-Server zu verbinden wäre, einige Server-Seite Sprache wie PHP, Java, .NET, unter anderem. Client Javascript sollte nur für die Schnittstellen verwendet werden.

Und es gibt Gerüchte über eine alte Legende über die Existenz von Server JavaScript, aber das ist eine andere Geschichte. ;)

Andere Tipps

Das wäre wirklich schlecht sein, weil zu tun, teilen Sie Ihre Verbindungszeichenfolge Ihrer Website eröffnet so viele Schwachstellen, die man nicht einfach flicken können, müssen Sie eine andere Methode verwenden, wenn Sie es sicher sein wollen. Andernfalls öffnen Sie ein großes Publikum auf den Vorteile Ihrer Website zu nehmen.

Web-Services

SQL 2005+ unterstützt die native WebServices, die Sie konnte fast verwenden, obwohl ich es nicht vorschlagen würde, wegen Sicherheitsrisiken können Sie Gesicht. Warum habe ich gesagt, fast . Nun Javascript ist nicht SOAP nativer, so wäre es ein bisschen komplizierter sein, tatsächlich zu machen. Du müss SOAP über XmlHttpRequest senden und empfangen. Überprüfen Sie Google für Javascript SOAP-Clients.

Ein perfektes Arbeits Code ..

    <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>

Beim Spielen mit JavaScript in einem HTA hatte ich kein Glück mit einer driver={SQL Server};... Verbindungszeichenfolge, sondern ein benannte DSN war OK:
Ich einrichten TestDSN und es getestet OK und dann var strConn= "DSN=TestDSN"; gearbeitet, so trug ich für meine in-house Tests und Lernzwecke auf dem Experimentieren.

Unser Server verfügt über mehrere Instanzen ausgeführt wird, zum Beispiel server1 \ dev und server1 \ Test , die Dinge etwas mehr gemacht heikel, wie ich es geschafft, einige Zeit verschwenden zu vergessen die \ zu entkommen als \\ :)
Nach einigen Sackgassen mit server=server1;instanceName=dev in den Verbindungszeichenfolgen, ich habe schließlich diese zu arbeiten:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

Windows-Anmeldeinformationen verwenden, anstatt einen Benutzer / PWD liefert, fand ich eine interessante Abwechslung war die Feinheiten der Integrated Security = true v Integrated Security = SSPI v Trusted_Connection=Yes entdecken - siehe Unterschied zwischen Integrated Security = True und Integrated Security = SSPI

Beachten Sie, dass Record als -1 zurückkommen, wenn der Standard mit AdOpenForwardOnly Typ. Wenn Sie mit kleinen Ergebnismengen arbeiten und / oder nicht die ganze Menge im Speicher dagegen auf einmal, Gebrauch rs.Open(strQuery, objConnection, 3); (3 = adOpenStatic) und das gibt eine gültige rs.RecordCount

Wie bereits erwähnt, bevor er nicht mit Client-Seite Javascript getan werden soll, aber es gibt einen Rahmen für die Umsetzung, was Sie sicherer werden sollen.

NodeJS ist ein Framework, das Sie Server-Verbindungen in Javascript, so haben Sie einen Blick in NodeJS und Sie werden wahrscheinlich lernen, ein bisschen mehr über die Kommunikation mit Datenbanken codieren können und Daten greifen Sie benötigen.

(Entschuldigung, dies war eine allgemeinere Antwort zu SQL-Backends – ich hatte die Antwort zur WebServices-Funktion von SQL Server 2005 nicht gelesen.Obwohl diese Funktion immer noch über HTTP und nicht direkter über Sockets ausgeführt wird, haben sie im Wesentlichen einen Mini-Webserver in den Datenbankserver eingebaut, sodass diese Antwort immer noch ein anderer Weg ist, den Sie einschlagen könnten.)

Sie können sich auch direkt über Sockets verbinden (Google „Javascript Sockets“). Mit „direkt“ meine ich an dieser Stelle die Verwendung einer Flash-Datei für diesen Zweck, obwohl HTML5 Web Sockets als Teil der Spezifikation enthält, mit denen Sie meiner Meinung nach dasselbe tun können.

Einige Leute nennen Sicherheitsprobleme, aber wenn Sie Ihre Datenbankberechtigungen richtig gestaltet haben, sollten Sie theoretisch von jedem Frontend, einschließlich OSQL, auf die Datenbank zugreifen können und keine Sicherheitslücke haben.Das Sicherheitsproblem wäre also, wenn Sie die Verbindung nicht über SSL herstellen würden.

Abschließend bin ich mir jedoch ziemlich sicher, dass dies alles theoretisch ist, da ich nicht glaube, dass es JavaScript-Bibliotheken für die Handhabung der Kommunikationsprotokolle für SSL oder SQL Server gibt. Wenn Sie also nicht bereit sind, diese Dinge selbst herauszufinden, wäre das der Fall Besser ist es, einen Webserver und eine serverseitige Skriptsprache zwischen Browser und Datenbank zu verwenden.

Ich denke nicht, Sie zu SQL Server von Client-Seite javascripts verbinden können. Sie müssen einige serverseitige Sprache holen, um Web-Anwendungen zu erstellen, die mit der Datenbank interagieren können und Javascript verwenden Ihre Benutzeroberfläche besser machen mit zu interagieren.

Sie können jede serverseitige Skriptsprache holen auf der Grundlage Ihrer bevorzugten Sprache:

  • PHP
  • ASP.Net
  • Ruby On Rails
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top