JavaScript MySQL ile bağlanabilir mi? Öyleyse nasıl?
JavaScript MySQL ile bağlanabilir mi? Öyleyse nasıl?
Yanıtlar:
Hayır, JavaScript doğrudan MySQL'e bağlanamaz. Ancak bunu yapmak için JS ile PHP'yi karıştırabilirsiniz.
JavaScript, istemci tarafı bir dildir ve MySQL veritabanınız bir sunucuda çalışacaktır
İstemci tarafı JavaScript, bir tür köprü olmadan MySQL'e erişemez. Ancak, JavaScript'in yalnızca bir istemci tarafı dili olduğuna dair yukarıdaki kalın ifadeler yanlıştır - JavaScript, Node.js'de olduğu gibi istemci tarafında ve sunucu tarafında çalışabilir.
Node.js, https://github.com/sidorares/node-mysql2 gibi bir şey aracılığıyla MySQL'e erişebilir
Socket.IO kullanarak da bir şeyler geliştirebilirsiniz.
İstemci tarafı JS uygulamasının MySQL'e erişip erişemeyeceğini mi sormak istediniz? Bu tür kütüphanelerin var olup olmadığından emin değilim, ama mümkün.
DÜZENLEME : Yazmaya başladığımızdan beri artık MySQL Kümesine sahibiz :
Node.js için MySQL Kümesi JavaScript Sürücüsü tam da göründüğü gibi - verilerinizi okumak ve yazmak için doğrudan JavaScript kodunuzdan çağrılabilen bir bağlayıcıdır. Veri düğümlerine doğrudan eriştiği için, bir MySQL Sunucusundan geçerken fazladan gecikme olmaz ve JavaScript kodundan // nesnelerinden SQL işlemlerine dönüştürülmesi gerekir. Herhangi bir nedenle, bir MySQL Sunucusundan geçmesini tercih ederseniz (örneğin, InnoDB'de tablolar depoluyorsanız), o zaman bu yapılandırılabilir.
Bir DB paketlerin set küratörlüğünde sindresorhus gelen node.js için.
JavaScript kullanarak bir MySQL veritabanına bağlanmak istiyorsanız, Node.js ve mysql adlı bir kitaplığı kullanabilirsiniz . Sorgular oluşturabilir ve sonuçları bir kayıt dizisi olarak alabilirsiniz. Denemek isterseniz, bir arka uç oluşturmak için proje oluşturucumu kullanabilir ve bağlanmak için veritabanı olarak MySQL'i seçebilirsiniz . Ardından, yeni REST API'nizi veya GraphQL uç noktanızı öne çıkarın ve MySQL veritabanınızla çalışmaya başlayın.
NOSTALJİ'DEN KALAN ESKİ CEVAP
SONRA
Soruyu anladığım ve hatalıysam beni düzelttiğim için, yalnızca istemci tarafında JavaScript bulunan klasik sunucu modelini ifade ediyor. Bu klasik modelde, LAMP sunucularına (Linux, Apache, MySQL, PHP) veritabanı ile temas halinde dile böylece PHP yazmak gerekir ve veritabanına istek verilerine PHP oldu yankı müşteriye iade verileri. Temel olarak dillerin fiziksel makinelere göre dağılımı şöyleydi:
Bu, aşağıdaki işlevselliğe sahip olduğumuz bir MVC modeline (Model, Görünüm, Denetleyici) yanıt verdi:
Denetleyici için, HTML yapısını (DOM) kontrol etmek için "düşük düzeyli" kitaplık olarak jQuery gibi gerçekten ilginç araçlarımız ve daha sonra farklı bağlantı kuran gözlemciler oluşturmamızı sağlayan Knockout.js gibi yeni, daha yüksek düzeyli araçlarımız var. Olaylar gerçekleştiğinde bunları güncelleyen DOM öğeleri. Aynı şekilde çalışan, ancak tam bir ortam gibi görünen Google'dan Angular.js de var . Aralarından seçim yapmanıza yardımcı olmak için, burada iki aracın iki mükemmel analizine sahipsiniz : Knockout - Angular.js ve Knockout.js - Angular.js . Ben hala okuyorum Umarım sana yardım ederler.
ŞİMDİ
Node.js tabanlı modern sunucularda, her şey için JavaScript kullanıyoruz. Node.js, Google V8, Chrome JavaScript motoru ile çalışan birçok kitaplığa sahip bir JavaScript ortamıdır. Bu yeni sunucularla çalışma şeklimiz:
O zaman NPM (Node.js paket yöneticisi) kullanarak kurabileceğimiz ve bunları doğrudan Node.js sunucumuzda kullanabileceğimiz birçok paketimiz var (Node.js öğrenmek isteyenler için bu başlangıç eğitimini deneyin genel bakış için). Ve bu paketler arasında, veritabanlarına erişmek için bunlardan bazılarına sahipsiniz. Bunu kullanarak, My SQL veritabanlarına erişmek için sunucu tarafındaki JavaScript'i kullanabilirsiniz.
Ancak Node.js ile çalışacaksanız yapabileceğiniz en iyi şey , JSON dosyalarına dayalı MongoDB gibi yeni NoSQL veritabanlarını kullanmaktır . MySQL gibi tabloları depolamak yerine, verileri JSON yapılarında depolar, böylece en büyüğünün boyutu için devasa tablolar oluşturmak yerine her yapının içine uzun sayısal vektörler gibi farklı veriler koyabilirsiniz.
Umarım bu kısa açıklama sizin için yararlı olur ve bu konuda daha fazla bilgi edinmek isterseniz, burada kullanabileceğiniz bazı kaynaklara sahipsiniz:
Umarım başlamanıza yardımcı olur.
İyi eğlenceler!
Biraz geç ama son zamanlarda MySql 5.7'nin http eklentisi aldığını öğrendim ve bu eklenti şu anda doğrudan mysql'e bağlanabilir.
Mysql 5.7 için Http İstemcisini arayın
Basit cevap: hayır.
JavaScript, tarayıcıda çalışan bir istemci tarafı dilidir ( node.js buna rağmen) ve MySQL, sunucuda çalışan bir sunucu tarafı teknolojisidir.
Bu, veritabanına bağlanmak için genellikle ASP.NET veya PHP gibi bir sunucu tarafı dili kullandığınız anlamına gelir.
EVET? Bir meteora bak. Bağlantılar:
http://meteor.com/screencast ve http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/
Nasıl yapıldığını anlamıyorum. Ama Nettuts + bu şeyi javascript-ajax bölümüne koydu, belki sihir olur.
Ayrıca, JS ile MongoDB'ye bağlanmanın ve eklemenin bir yolunu da gösterir, örneğin:
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});
Ortamınıza bağlı olarak, bunu yapmak için Rhino'yu kullanabilirsiniz, bkz. Rhino web sitesi . Bu, JavaScript'in içinden tüm Java kitaplıklarına erişmenizi sağlar.
Evet. MySQL için bir HTTP eklentisi var.
http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/
Şimdi sadece Google'da araştırıyorum, bu da beni bu yığın akışı sorusuna yöneltti. Bir MySQL veritabanını şimdi veya yakın gelecekte AJAX yapabilmelisiniz (üretime hazır olmadığını iddia ediyorlar).
Tipik olarak, MySQL'e bağlanmak için PHP gibi bir sunucu tarafı kodlama diline ihtiyacınız vardır, ancak yalnızca hızlı bir modelleme yapıyorsanız, http://www.mysqljs.com adresini kullanarak Javascript'ten MySQL'e bağlanabilirsiniz. aşağıdaki gibidir:
MySql.Execute(
"mysql.yourhost.com",
"username",
"password",
"database",
"select * from Users",
function (data) {
console.log(data)
});
Bunun MySql'e erişmenin güvenli bir yolu olmadığı ve yalnızca özel demolar veya Phonegap iOS uygulamaları gibi son kullanıcılar tarafından kaynak koduna erişilemeyen senaryolar için uygun olduğu belirtilmelidir.
var strSrc = "http://mysqljs.com/sql.aspx?";
Evet yapabilirsin. MySQL bağlayıcıları bağlantı için TCP kullanır ve JS'de Websocket adlı TCP istemcisinin biraz değiştirilmiş bir sürümü vardır. Ancak websocket ile MySQL sunucusuna doğrudan bağlanamazsınız. Websocket ve mysql arasında bazı 3. parti köprülere ihtiyacınız olacak. Websocket'den sorgu alır, mysql'e gönderir, yanıt sonucu ve JS'ye tekrar gönderir.
Ve bu, websocket-keskin kitaplığı ile C # ile yazılmış örnek köprüm:
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 tarafı:
var ws = new WebSocket("ws://localhost/");
ws.send("server=localhost;user=root;database=mydb;");
ws.send("select * from users");
Hayır.
PHP'de bir sarmalayıcı yazmanız ve sonra döndürülen verileri dışa aktarmanız gerekir (muhtemelen Json olarak). ASLA, "_GET" inizden SQL kodunu almayın, buna SQL enjeksiyonu denir (bunu öğrenen kişiler veritabanınız üzerinde tam kontrole sahip olacaklardır).
Bu yazdığım bir örnek:
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;
}
Lütfen SQL enjeksiyonları hakkında bilgi edinin.
MySQL'e Javascript'ten bir JAVA uygulaması aracılığıyla bağlanabilirsiniz. JAVA uygulaması, MySQL'e bağlanmanıza izin verecek olan MySQL için JDBC sürücüsünü yerleştirecektir.
Uzak bir MySQL sunucusuna bağlanmak istiyorsanız (uygulamayı indirdiğinizin dışında), kullanıcılardan uygulama için genişletilmiş izinler vermelerini istemeniz gerektiğini unutmayın. Varsayılan olarak, uygulama yalnızca indirildikleri sunucuya bağlanabilir.
MySQL'de kilitli değilseniz PostgreSQL'e geçebilirsiniz. Veritabanı içindeki JavaScript prosedürlerini (PL / V8) destekler. Çok hızlı ve güçlüdür. Bu gönderiye göz atın .
JavaScript, gerekli verileri almak için doğrudan DB'ye bağlanamaz, ancak AJAX'ı kullanabilirsiniz. Sunucuya kolay AJAX isteği yapmak için jQuery JS çerçevesini http://jquery.com kullanabilirsiniz . İşte küçük bir örnek
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);
Sorunuzu anladım, kodunuz içinde DB bağlantısını açabileceğiniz dot.net ve java gibi dillerle karıştırdığınızı düşünüyorum. Hayır, JavaScript, bir istemci tarafı kodlama dili olduğundan (İstisna Node.js) MySQL'e doğrudan bağlanamaz. Verilere erişmek için RESTful API gibi bir orta katmana ihtiyacınız vardır.
PHP dosyasını kullanarak mysql bağlantısı ekleyebilirsiniz. Aşağıda PHP dosyası örneği verilmiştir.
<?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?
.