Czy JavaScript może łączyć się z MySQL? Jeśli tak to jak?
Czy JavaScript może łączyć się z MySQL? Jeśli tak to jak?
Odpowiedzi:
Nie, JavaScript nie może bezpośrednio połączyć się z MySQL. Ale możesz mieszać JS z PHP, aby to zrobić.
JavaScript jest językiem po stronie klienta, a Twoja baza danych MySQL będzie działać na serwerze
JavaScript po stronie klienta nie może uzyskać dostępu do MySQL bez jakiegoś mostu. Ale powyższe pogrubione stwierdzenia, że JavaScript jest językiem po stronie klienta, są nieprawidłowe - JavaScript może działać po stronie klienta i po stronie serwera, tak jak w przypadku Node.js.
Node.js może uzyskać dostęp do MySQL przez coś takiego jak https://github.com/sidorares/node-mysql2
Możesz także stworzyć coś przy użyciu Socket.IO
Czy chodziło Ci o pytanie, czy aplikacja JS po stronie klienta może uzyskać dostęp do MySQL? Nie jestem pewien, czy takie biblioteki istnieją, ale są możliwe.
EDYCJA : Od momentu napisania mamy teraz klaster MySQL :
Sterownik MySQL Cluster JavaScript dla Node.js jest dokładnie tym, na co wygląda - jest to łącznik, który można wywołać bezpośrednio z kodu JavaScript w celu odczytu i zapisu danych. Ponieważ uzyskuje bezpośredni dostęp do węzłów danych, nie ma dodatkowych opóźnień związanych z przejściem przez serwer MySQL i konieczność konwersji z obiektów kodu JavaScript // do operacji SQL. Jeśli z jakiegoś powodu wolisz, aby przechodził przez serwer MySQL (na przykład, jeśli przechowujesz tabele w InnoDB), możesz to skonfigurować.
JSDB oferuje interfejs JS do DB.
Kuratorem zestaw pakietów DB dla node.js z sindresorhus.
Jeśli chcesz połączyć się z bazą danych MySQL za pomocą JavaScript, możesz użyć Node.js i biblioteki o nazwie mysql . Możesz tworzyć zapytania i uzyskiwać wyniki jako tablicę rejestrów. Jeśli chcesz to wypróbować, możesz użyć mojego generatora projektów do utworzenia zaplecza i wybrać MySQL jako bazę danych do połączenia. Następnie po prostu wyeksponuj swój nowy interfejs API REST lub punkt końcowy GraphQL przed sobą i zacznij pracować z bazą danych MySQL.
STARA ODPOWIEDŹ POZOSTAŁA NOSTALGIA
NASTĘPNIE
Jak rozumiem pytanie i poprawiam mnie, jeśli się mylę, odnosi się do klasycznego modelu serwera z JavaScriptem tylko po stronie klienta. W tym klasycznym modelu z serwerami LAMP (Linux, Apache, MySQL, PHP) językiem w kontakcie z bazą był PHP, więc aby zażądać danych do bazy trzeba napisać skrypty PHP i powtórzyć zwracane dane do klienta. Zasadniczo rozkład języków według fizycznych maszyn był następujący:
Odpowiadało to na model MVC (Model, Widok, Kontroler), w którym mieliśmy następującą funkcjonalność:
Jeśli chodzi o kontroler, mamy naprawdę interesujące narzędzia, takie jak jQuery , jako biblioteka „niskiego poziomu” do kontrolowania struktury HTML (DOM), a następnie nowe, bardziej wysokopoziomowe, jak Knockout.js, które pozwalają nam tworzyć obserwatory łączące różne Elementy DOM aktualizujące je, gdy wystąpią zdarzenia. Jest też Angular.js od Google, który działa w podobny sposób, ale wydaje się być kompletnym środowiskiem. Aby pomóc Ci wybrać jedną z nich, mamy tutaj dwie doskonałe analizy dwóch narzędzi: Knockout vs. Angular.js i Knockout.js vs. Angular.js . Nadal czytam. Mam nadzieję, że ci pomogą.
TERAZ
W nowoczesnych serwerach opartych na Node.js używamy JavaScript do wszystkiego. Node.js to środowisko JavaScript z wieloma bibliotekami, które współpracują z Google V8, silnikiem JavaScript Chrome. Sposób, w jaki pracujemy z tymi nowymi serwerami, to:
Następnie mamy wiele pakietów, które możemy zainstalować za pomocą NPM (menedżera pakietów Node.js) i używać ich bezpośrednio na naszym serwerze Node.js, po prostu tego wymagając (dla tych z Was, którzy chcą się uczyć Node.js, wypróbuj ten samouczek dla początkujących dla przeglądu). Wśród tych pakietów masz dostęp do niektórych baz danych. Korzystając z tego, możesz użyć JavaScript po stronie serwera, aby uzyskać dostęp do baz danych My SQL.
Ale najlepsze, co możesz zrobić, jeśli zamierzasz pracować z Node.js, to użyć nowych baz danych NoSQL, takich jak MongoDB , opartych na plikach JSON. Zamiast przechowywać tabele, takie jak MySQL, przechowuje dane w strukturach JSON, dzięki czemu możesz umieścić różne dane w każdej strukturze, takie jak długie wektory numeryczne, zamiast tworzyć ogromne tabele dla rozmiaru największej.
Mam nadzieję, że to krótkie wyjaśnienie stanie się dla Ciebie przydatne, a jeśli chcesz dowiedzieć się więcej na ten temat, oto kilka zasobów, z których możesz skorzystać:
Mam nadzieję, że pomoże ci to zacząć.
Baw się dobrze!
Trochę późno, ale niedawno dowiedziałem się, że MySql 5.7 ma wtyczkę http, dzięki której użytkownik może teraz bezpośrednio połączyć się z mysql.
Poszukaj klienta HTTP dla mysql 5.7
Prosta odpowiedź brzmi: nie.
JavaScript to język po stronie klienta, który działa w przeglądarce ( niezależnie od node.js ), a MySQL to technologia po stronie serwera, która działa na serwerze.
Oznacza to, że do łączenia się z bazą danych zazwyczaj używasz języka po stronie serwera, takiego jak ASP.NET lub PHP.
TAK? Spójrz na meteor. Spinki do mankietów:
http://meteor.com/screencast i http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/
Nie rozumiem, jak to się robi. Ale Nettuts + umieścił to w sekcji javascript-ajax, może dzieje się magia.
Pokazuje również sposób łączenia i wstawiania do MongoDB za pomocą JS, na przykład:
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});
W zależności od środowiska możesz do tego użyć Rhino, zobacz witrynę Rhino . Daje to dostęp do wszystkich bibliotek Java z poziomu JavaScript.
Tak. Istnieje wtyczka HTTP dla MySQL.
http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/
Po prostu google teraz o tym, co doprowadziło mnie do pytania o przepełnienie stosu. Powinieneś być w stanie AJAX bazy danych MySQL teraz lub w najbliższej przyszłości (twierdzą, że nie jest gotowa do produkcji).
Zwykle potrzebujesz języka skryptowego po stronie serwera, takiego jak PHP, aby połączyć się z MySQL, jednak jeśli robisz tylko szybką makietę, możesz użyć http://www.mysqljs.com, aby połączyć się z MySQL z JavaScript, używając kodu jak następuje:
MySql.Execute(
"mysql.yourhost.com",
"username",
"password",
"database",
"select * from Users",
function (data) {
console.log(data)
});
Należy wspomnieć, że nie jest to bezpieczny sposób uzyskiwania dostępu do MySql i nadaje się tylko do prywatnych prezentacji lub scenariuszy, w których użytkownicy końcowi nie mają dostępu do kodu źródłowego, na przykład w aplikacjach Phonegap iOS.
var strSrc = "http://mysqljs.com/sql.aspx?";
Tak, możesz. Konektory MySQL używają TCP do połączenia, aw JS jest trochę zmodyfikowana wersja klienta TCP o nazwie Websocket. Ale nie możesz bezpośrednio połączyć się z serwerem MySQL przez websocket. Będziesz potrzebował mostu innej firmy między websocket i mysql. Otrzymuje zapytanie z websocket, wysyła je do mysql, wynik odpowiedzi i ponownie wysyła do JS.
A to jest mój przykładowy most napisany w C # z biblioteką websocket-sharp:
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();
}
}
Strona JS:
var ws = new WebSocket("ws://localhost/");
ws.send("server=localhost;user=root;database=mydb;");
ws.send("select * from users");
Nie.
Musisz napisać wrapper w PHP, a następnie wyeksportować zwrócone dane (prawdopodobnie jako Json). NIGDY nie pobieraj kodu SQL ze swojego „_GET”, ponieważ nazywa się to wstrzyknięciem SQL (osoby, które się tego dowiedzą, będą miały pełną kontrolę nad Twoją bazą danych).
Oto przykład, który napisałem:
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;
}
Dowiedz się więcej o zastrzykach SQL.
Możesz połączyć się z MySQL z poziomu JavaScript poprzez aplet JAVA. Aplet JAVA osadziłby sterownik JDBC dla MySQL, który pozwoli ci połączyć się z MySQL.
Pamiętaj, że jeśli chcesz połączyć się ze zdalnym serwerem MySQL (innym niż ten, z którego pobrałeś aplet), będziesz musiał poprosić użytkowników o przyznanie rozszerzonych uprawnień do apletu. Domyślnie aplet może łączyć się tylko z serwerem, z którego został pobrany.
JavaScript nie może łączyć się bezpośrednio z DB, aby uzyskać potrzebne dane, ale możesz użyć AJAX. Aby ułatwić wysyłanie żądań AJAX do serwera, możesz użyć frameworka jQuery JS http://jquery.com . Oto mały przykład
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();
// mysql connection and select query
$conn = new mysqli($servername, $username, $password, $dbname);
try {
die("Connection failed: " . $conn->connect_error);
$sql = "SELECT * FROM [table_name] WHERE condition = [conditions]";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$out[] = [
'field1' => $row["field1"],
'field2' => $row["field2"]
];
}
} else {
echo "0 results";
}
} catch(Exception $e) {
echo "Error: " . $e->getMessage();
}
echo json_encode($out);
Zrozumiałem twoje pytanie, myślę, że mylisz je z językami takimi jak dot.net i java, w których możesz otworzyć połączenie DB w swoim kodzie. Nie, JavaScript nie może bezpośrednio łączyć się z MySQL, ponieważ JavaScript jest językiem skryptowym po stronie klienta (wyjątek Node.js). Aby uzyskać dostęp do danych, potrzebujesz warstwy pośredniej, takiej jak RESTful API.
Możesz dodać połączenie mysql za pomocą pliku PHP. Poniżej przykład pliku PHP.
<?php
$con = mysql_connect('localhost:3306', 'dbusername', 'dbpsw');
mysql_select_db("(dbname)", $con);
$sql="SELECT * FROM table_name";
$result = mysql_query($sql);
echo " <table border='1'>
<tr>
<th>Header of Table name</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['(database_column_name)'] . "</td>";
echo "<td>" . $row['database_column_name'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?> }
Can JavaScript connect with MySQL?
.