ฐานข้อมูล SQL บนเว็บ HTML5
เว็บฐานข้อมูล SQL API ไม่ได้เป็นส่วนหนึ่งของข้อกำหนด HTML5 แต่มันเป็นข้อกำหนดแยกต่างหากแนะนำชุดของ API ที่จะใช้ฐานข้อมูลลูกค้าการดำเนินงาน SQL
ถ้าคุณเป็นโปรแกรมเมอร์เว็บท้ายด้านหลังก็ควรจะง่ายต่อการเข้าใจการดำเนินงาน SQL
นอกจากนี้คุณยังสามารถดูของเรา กวดวิชา SQL ที่จะเรียนรู้การดำเนินงานฐานข้อมูลความรู้เพิ่มเติม
เว็บฐานข้อมูล SQL สามารถทำงานในรุ่นล่าสุดของ Safari, Chrome และเบราเซอร์ Opera
วิธีการหลัก
ต่อไปนี้เป็นสามวิธีหลักที่กำหนดไว้ในข้อกำหนด:
- opendatabase: วิธีนี้จะใช้ฐานข้อมูลที่มีอยู่หรือสร้างฐานข้อมูลวัตถุฐานข้อมูลใหม่
- รายการ: วิธีการนี้จะช่วยให้เราสามารถควบคุมการทำธุรกรรมและขึ้นอยู่กับกรณีนี้กระทำหรือย้อนกลับ
- ExecuteSQL: วิธีการนี้ถูกนำมาใช้ในการดำเนินการแบบสอบถาม SQL ที่เกิดขึ้นจริง
เปิดฐานข้อมูล
เราสามารถใช้ opendatabase () วิธีการเปิดฐานข้อมูลที่มีอยู่ถ้าฐานข้อมูลไม่ได้อยู่สร้างฐานข้อมูลใหม่ใช้รหัสต่อไปนี้:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
opendatabase () วิธีการของพารามิเตอร์ห้าที่สอดคล้องกับคำอธิบาย:
- ชื่อฐานข้อมูล
- หมายเลขรุ่น
- คำอธิบายข้อความ
- ขนาดฐานข้อมูล
- สร้างการติดต่อกลับ
พารามิเตอร์ที่ห้าสร้างโทรกลับจะถูกเรียกว่าหลังจากการสร้างฐานข้อมูล
ในการดำเนินการแบบสอบถาม
การดำเนินการใช้ database.transaction () ฟังก์ชัน:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); });
ข้อความข้างต้นสร้างตารางชื่อเข้าสู่ระบบฐานข้อมูล 'mydb' หลังจากที่การกระทำ
แทรกข้อมูล
หลังจากรันคำสั่งดังกล่าวเพื่อสร้างตารางที่เราสามารถใส่ข้อมูลบางส่วน:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "本教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.w3big.com")'); });
นอกจากนี้เรายังสามารถใช้ค่าแบบไดนามิกเพื่อแทรกข้อมูล:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?'), [e_id, e_log]; });
เช่น e_id e_log และตัวแปรภายนอก ExecuteSQL พารามิเตอร์อาร์เรย์ถูกแมปไปแต่ละรายการใน "?."
อ่านข้อมูล
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการอ่านข้อมูลที่มีอยู่แล้วในฐานข้อมูล:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "本教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.w3big.com")'); }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查询记录条数: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ alert(results.rows.item(i).log ); } }, null); });
ตัวอย่างที่สมบูรณ์
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); var msg; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "本教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.w3big.com")'); msg = '<p>数据表已创建,且插入了两条数据。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查询记录条数: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); }); </script> </head> <body> <div id="status" name="status">状态信息</div> </body> </html>
ตัวอย่างของผลการดำเนินงานดังกล่าวข้างต้นดังต่อไปนี้:
ลบระเบียน
รูปแบบลบระเบียนดังต่อไปนี้:
db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); });
นำข้อมูลที่ระบุ ID ยังสามารถเป็นแบบไดนามิก:
db.transaction(function(tx) { tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]); });
ปรับปรุงระเบียน
ปรับปรุงระเบียนโดยใช้รูปแบบต่อไปนี้:
db.transaction(function (tx) { tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2'); });
การปรับปรุงข้อมูลที่ระบุ ID ยังสามารถเป็นแบบไดนามิก:
db.transaction(function(tx) { tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]); });
ตัวอย่างที่สมบูรณ์
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <script type="text/javascript"> var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); var msg; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "本教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.w3big.com")'); msg = '<p>数据表已创建,且插入了两条数据。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); msg = '<p>删除 id 为 1 的记录。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2'); msg = '<p>更新 id 为 2 的记录。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查询记录条数: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); }); </script> </head> <body> <div id="status" name="status">状态信息</div> </body> </html>
ตัวอย่างของผลการดำเนินงานดังกล่าวข้างต้นดังต่อไปนี้: