wake-up-neo.com

Kann sich JavaScript mit MySQL verbinden?

Kann sich JavaScript mit MySQL verbinden? Wenn das so ist, wie?

96

Nein, JavaScript kann keine direkte Verbindung zu MySQL herstellen. Sie können JS jedoch mit PHP mischen.

JavaScript ist eine clientseitige Sprache, und Ihre MySQL-Datenbank wird auf einem Server ausgeführt

23
konradowy

Clientseitiges JavaScript kann ohne Brücke nicht auf MySQL zugreifen. Die obigen fetten Aussagen, dass JavaScript nur eine clientseitige Sprache ist, sind jedoch falsch. JavaScript kann wie Node.js clientseitig und serverseitig ausgeführt werden.

Node.js kann auf MySQL über etwas wie https://github.com/sidorares/node-mysql2 zugreifen.

Sie können auch etwas mit Socket.IO entwickeln

Wollten Sie fragen, ob eine clientseitige JS-App auf MySQL zugreifen kann? Ich bin nicht sicher, ob solche Bibliotheken existieren, aber sie sind möglich.

EDIT: Seit dem Schreiben haben wir jetzt MySQL Cluster :

Der MySQL Cluster JavaScript-Treiber für Node.js ist genau das, was er sich anhört - er ist ein Connector, der direkt aus Ihrem JavaScript-Code aufgerufen werden kann, um Ihre Daten zu lesen und zu schreiben. Da direkt auf die Datenknoten zugegriffen wird, gibt es keine zusätzliche Latenzzeit, wenn ein MySQL-Server durchgeleitet wird, und muss JavaScript-Code-/// Objekte in SQL-Vorgänge konvertieren. Wenn Sie aus irgendeinem Grund einen MySQL-Server durchlaufen möchten (z. B. wenn Sie Tabellen in InnoDB speichern), können Sie dies konfigurieren.

74
LeeGee

DANN

Da ich die Frage verstehe und korrigiere, falls ich falsch liege, bezieht sich das klassische Servermodell mit JavaScript nur auf der Clientseite. Bei diesem klassischen Modell mit LAMP -Servern (Linux, Apache, MySQL, PHP) ist die Sprache, die mit der Datenbank in Kontakt steht, PHP. Um Daten an die Datenbank anzufordern, müssen Sie PHP -Skripts schreiben und Echo die zurückgegebenen Daten an den Client. Grundsätzlich ist die Sprachenverteilung nach physischen Maschinen:

  1. Serverseite: PHP und MySQL.
  2. Clientseite: HTML/CSS und JavaScript.

Dies entspricht einem MVC-Modell (Modell, Ansicht, Controller), bei dem wir die folgende Funktionalität haben:

  1. MODEL: Das Modell behandelt die Daten, in diesem Fall die PHP - Skripts, die Variablen verwalten oder auf gespeicherte Daten zugreifen, in diesem Fall in unserer MySQL-Datenbank und als JSON-Daten an die Datenbank senden Klient.
  2. VIEW: Die Ansicht ist das, was wir sehen und sollte völlig unabhängig vom Modell sein. Es müssen lediglich die im Modell enthaltenen Daten angezeigt werden, es sollten jedoch keine relevanten Daten vorhanden sein. In diesem Fall verwendet die Ansicht HTML und CSS. HTML, um die Grundstruktur der Ansicht zu erstellen, und CSS, um dieser Grundstruktur die Form zu geben.
  3. CONTROLLER: Der Controller ist die Schnittstelle zwischen unserem Modell und unserer Sicht. In diesem Fall wird JavaScript als Sprache verwendet. Dabei werden die Daten, die das Modell als JSON-Paket sendet, in die Container eingefügt, die die HTML-Struktur bieten. Die Art und Weise, wie der Controller mit dem Modell interagiert, verwendet AJAX. Wir verwenden die Methoden GET und POST, um PHP -Skripts serverseitig aufzurufen und die zurückgegebenen Daten vom Server abzufangen.

Für den Controller haben wir wirklich interessante Tools wie jQuery , als "Low-Level" -Bibliothek, um die HTML-Struktur (DOM) zu steuern, und dann neue, höhere Levels als Knockout.js , die uns erlauben Beobachter erstellen, die verschiedene DOM-Elemente miteinander verbinden, und diese beim Auftreten von Ereignissen aktualisieren. Es gibt auch Angular.js von Google, das auf ähnliche Weise funktioniert, aber eine vollständige Umgebung zu sein scheint. Um Ihnen bei der Auswahl zu helfen, gibt es zwei hervorragende Analysen der beiden Tools: Knockout vs. Angular.js und Knockout.js vs. Angular.js . Ich lese immer noch. Hoffe, dass sie dir helfen.

JETZT

In modernen Servern in Node.js verwenden wir JavaScript für alles. Node.js ist eine JavaScript-Umgebung mit vielen Bibliotheken, die mit der Google V8-Chrome-JavaScript-Engine arbeiten. Wir arbeiten mit diesen neuen Servern:

  1. Node.js und Express : Der Hauptrahmen, in dem der Server erstellt wird. Wir können einen Server mit wenigen Zeilen Code erstellen oder sogar Bibliotheken als Express verwenden, um die Erstellung des Servers noch einfacher zu machen. Mit Node.js und Express verwalten wir die Petitionen an den Server von den Clients und beantworten sie mit den entsprechenden Seiten.
  2. Jade : Um die Seiten zu erstellen, verwenden wir eine Templatiersprache, in diesem Fall Jade, mit der wir Webseiten schreiben können, während wir HTML schreiben, jedoch mit Unterschieden (es dauert etwas, aber es ist einfach.) lernen). Dann müssen wir im Code des Servers, um die Client-Petitionen zu beantworten, nur den Jade-Code in "echten" HTML-Code umwandeln.
  3. Stylus : Ähnlich wie Jade, jedoch für css. In diesem Fall verwenden wir eine Middleware-Funktion, um die Stiftdatei in eine echte CSS-Datei für unsere Seite zu konvertieren.

Dann haben wir eine Vielzahl von Paketen, die wir mit dem NPM (Node.js Paketmanager) installieren können, und sie direkt in unserem Node.js-Server verwenden können (nur für diejenigen, die dies wünschen) Um Node.js zu lernen, probieren Sie dieses Anfänger-Tutorial für einen Überblick. Und unter diesen Paketen haben Sie einige, um auf Datenbanken zuzugreifen. Mit diesem können Sie auf der Serverseite JavaScript verwenden, um auf My SQL-Datenbanken zuzugreifen.

Wenn Sie jedoch mit Node.js arbeiten möchten, können Sie die neuen NoSQL-Datenbanken wie MongoDB verwenden, die auf JSON-Dateien basieren. Anstatt Tabellen wie MySQL zu speichern, werden die Daten in JSON-Strukturen gespeichert. Sie können also unterschiedliche Daten wie lange numerische Vektoren in jede Struktur einfügen, statt riesige Tabellen für die Größe der größten zu erstellen.

Ich hoffe, diese kurze Erklärung wird für Sie nützlich, und wenn Sie mehr darüber erfahren möchten, haben Sie hier einige Ressourcen, die Sie verwenden können:

  • Egghead: Diese Seite enthält viele kurze Tutorials zu JavaScript und seiner Umgebung. Es lohnt einen Versuch. Und die machen von Zeit zu Zeit Rabatte.
  • Code School: Mit einem kostenlosen und sehr interessanten Kurs zu Chrome Developer Tools, mit dem Sie die Clientseite testen können.
  • Codecademy: Mit kostenlosen Kursen zu HTML, CSS, JavaScript, jQuery und PHP, die Sie mit Online-Beispielen verfolgen können.
  • - 10gen Education: Mit allem, was Sie über MongoDB in Tutorials für verschiedene Sprachen wissen müssen.W3Schools: Hier finden Sie Tutorials zu all dem, und Sie können es als Referenz verwenden, da es viele kurze Code-Beispiele gibt, die wirklich nützlich sind.
  • Udacity: Ein Ort mit kostenlosen Videokursen zu verschiedenen Themen mit ein paar interessanten Informationen zur Webentwicklung und meinem bevorzugten WebGL-Kurs für 3D-Grafiken mit JavaScript.
  • UPDATE!.

Wenn Sie über einen Knotenserver verfügen, wenn Sie mit einer MySQL-Datenbank kommunizieren möchten, können Sie eine Bibliothek mit dem Namen mysql verwenden. Sie können Abfragen wie mit PHP erstellen, und Sie können es mit einem -API-Generator versuchen, den ich erstellt habe und den Sie mit NPM herunterladen können. Es verfügt über einen Assistenten, mit dem Sie auswählen können, welche Datenbanken Sie verwenden möchten.

Ich hoffe es hilft dir beim Start.

Habe Spaß!.

Have fun!

51
Timbergus

Ich denke, Sie müssten so etwas wie PHP in die Gleichung einfügen. PHP, um mit der Datenbank zu interagieren, und Sie könnten dann mit Javascript AJAX aufrufen.

8
Kerry

Etwas spät, aber kürzlich habe ich herausgefunden, dass MySql 5.7 ein HTTP-Plugin hat, über das sich der Benutzer jetzt direkt mit MySQL verbinden kann.

Suchen Sie nach HTTP-Client für Mysql 5.7

7
Atul Chaudhary

Einfache Antwort ist: Nein.

JavaScript ist eine clientseitige Sprache, die im Browser ausgeführt wird ( node.js ungeachtet) und MySQL ist eine serverseitige Technologie, die auf dem Server ausgeführt wird.

Das bedeutet, dass Sie normalerweise eine serverseitige Sprache wie ASP.NET oder PHP verwenden, um eine Verbindung zur Datenbank herzustellen.

7
Dean Harding

JA? Schauen Sie sich einen Meteor an. Links:

http://meteor.com/screencast und http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/

Ich verstehe nicht, wie es gemacht wird. Aber Nettuts + setzen diese Sache in den Javascript-Ajax-Abschnitt, vielleicht geschieht Magie.

Es zeigt auch eine Möglichkeit, sich mit JS mit MongoDB zu verbinden und einzufügen:

Products.insert({Name : "Hammer", Price : 4.50, InStock : true});
Products.insert({Name : "Wrench", Price : 2.70, InStock : true});
Products.insert({Name : "Screw Driver", Price : 3.00, InStock : false});
Products.insert({Name : "Drill", Price : 5.25, InStock : true});
6
Ivan Wang

Ja. Es gibt ein HTTP-Plugin für MySQL. 

http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/

Ich google gerade jetzt, was mich zu dieser Stackoverflow-Frage führte. Sie sollten in der Lage sein, eine MySQL-Datenbank jetzt oder in naher Zukunft AJAX zu erstellen (sie behaupten, dass sie nicht produktionsbereit ist).

4
Nick Manning

Abhängig von Ihrer Umgebung können Sie Rhino dazu verwenden, siehe Rhino-Website . Dadurch haben Sie von JavaScript aus Zugriff auf alle Java-Bibliotheken. 

4
Kusmeroglu

Sie können AJAX -Anfragen an einige serverseitige RESTful-Wrapper für MySQL senden, z. B. DBSlayer , PhpRestSQL oder AlsoSQL (für Drizzle , eine Gabel von MySQL ).

1
niutech

Normalerweise benötigen Sie eine serverseitige Skriptsprache wie PHP, um eine Verbindung zu MySQL herzustellen. Wenn Sie jedoch nur ein schnelles Mockup durchführen, können Sie http://www.mysqljs.com verwenden Stellen Sie von Javascript aus eine Verbindung zu MySQL her, indem Sie den Code wie folgt verwenden:

MySql.Execute(
    "mysql.yourhost.com", 
    "username", 
    "password", 
    "database", 
    "select * from Users", 
    function (data) {
        console.log(data)
});

Es muss erwähnt werden, dass dies kein sicherer Zugriff auf MySql ist und nur für private Demos oder Szenarien geeignet ist, in denen Endbenutzer nicht auf den Quellcode zugreifen können, z.

0
Fiach Reid

Ja, du kannst. MySQL-Konnektoren verwenden TCP für die Verbindung, und in JS gibt es eine kleine modifizierte Version von TCP Client namens Websocket. Mit dem Websocket können Sie jedoch keine direkte Verbindung zum MySQL-Server herstellen. Sie benötigen eine 3rd Party Bridge zwischen Websocket und MySQL. Es empfängt eine Abfrage vom Websocket, sendet sie an MySQL, gibt ein Antwortergebnis aus und sendet sie erneut an JS.

Und dies ist meine in C # geschriebene Beispielbrücke mit websocket-scharfer Bibliothek:

class JSQLBridge : WebSocketBehavior
{
    MySqlConnection conn;

    protected override void OnMessage(MessageEventArgs e)
    {
        if (conn == null)
        {
            try
            {
                conn = new MySqlConnection(e.Data);
                conn.Open();
            }
            catch (Exception exc)
            {
                Send(exc.Message);
            }
        }
        else
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand(e.Data, conn);
                cmd.ExecuteNonQuery();
                Send("success");
            }
            catch (Exception exc)
            {
                Send(exc.Message);
            }
        }
    }

    protected override void OnClose(CloseEventArgs e)
    {
        if (conn != null)
            conn.Close();
    }
}

JS Seite:

var ws = new WebSocket("ws://localhost/");

ws.send("server=localhost;user=root;database=mydb;");

ws.send("select * from users");
0
Brain Storm

JavaScript kann keine direkte Verbindung zur Datenbank herstellen, um die erforderlichen Daten abzurufen. Sie können jedoch AJAX verwenden. Um die Anforderung von AJAX an den Server zu vereinfachen, können Sie jQuery JS framework http://jquery.com verwenden. Hier ist ein kleines Beispiel

JS:

jQuery.ajax({
type: "GET",
dataType: "json",
url: '/ajax/usergroups/filters.php',
data: "controller=" + controller + "&view=" + view,
success: function(json)
{
    alert(json.first);
    alert(json.second);
});

PHP:

$out = array(); 
$out['first']   = 'first value';
$out['second']   = 'second value';
echo json_encode($out);
0
Octan

Sie können von Javascript aus über ein Java-Applet eine Verbindung zu MySQL herstellen. Das Java-Applet würde den JDBC-Treiber für MySQL einbetten, sodass Sie sich mit MySQL verbinden können. 

Denken Sie daran, dass Sie, wenn Sie eine Verbindung zu einem MySQL-Remote-Server herstellen möchten (mit Ausnahme des Servers, von dem Sie das Applet heruntergeladen haben), die Benutzer auffordern müssen, erweiterte Berechtigungen für das Applet zu erteilen. Standardmäßig kann das Applet nur eine Verbindung zu dem Server herstellen, von dem es heruntergeladen wird. 

0
Rajiv

Wenn Sie nicht für MySQL gesperrt sind, können Sie zu PostgreSQL wechseln. Es unterstützt JavaScript-Prozeduren (PL/V8) in der Datenbank. Es ist sehr schnell und kraftvoll. Checken Sie diese post .

0
ramigg

Nein.

Sie müssen einen Wrapper in PHP schreiben und dann die zurückgegebenen Daten exportieren (wahrscheinlich als Json). NIEMALS erhalten Sie von Ihrem "_GET" den SQL-Code, da dies als SQL-Injektion bezeichnet wird (Personen, die dies erfahren, haben die volle Kontrolle über Ihre Datenbank).

Dies ist ein Beispiel, das ich geschrieben habe:

function getJsonData()
{
        global $db;
        if (!$db->isConnected()) {
               return "Not connected";
        }
        $db->query("SELECT * FROM entries");
        $values = array();
        while( $v = $db->fetchAssoc()){
                $values[] = $v;
        }
        return json_encode($values);    
}

switch (@$_GET["cmd"]){
        case 'data':
                print getJsonData();
                exit;

        default:
                print getMainScreen();
                exit; 
}

Informieren Sie sich bitte über SQL-Injektionen.

0
elcuco