Web SQL Database API ไม่ได้รวมอยู่ในข้อกำหนด HTML 5 มันเป็นข้อกำหนดอิสระที่แนะนำชุดของ API ที่ใช้ SQL เพื่อใช้งานฐานข้อมูลไคลเอนต์ สมมติว่าคุณเป็นนักพัฒนาเว็บที่ยอดเยี่ยมไม่ต้องสงสัยเลยว่าคุณคุ้นเคยกับแนวคิดที่เกี่ยวข้องกับ SQL และฐานข้อมูล หากคุณไม่คุ้นเคยกับ SQL ให้อ่านต่อ ก่อนหน้าบทความนี้ควรเรียนรู้บทช่วยสอนที่เกี่ยวข้องกับ SQL ก่อน
เวอร์ชันล่าสุดของ Chrome, Safari และ Opera ทั้งหมดรองรับฐานข้อมูล Web SQL ทั้งหมด
วิธีหลักบทความนี้จะแนะนำสามวิธีหลักที่กำหนดไว้ในข้อกำหนด:
1. Opendatabase: วิธีนี้ใช้ฐานข้อมูลที่มีอยู่หรือสร้างฐานข้อมูลใหม่เพื่อสร้างวัตถุฐานข้อมูล
2. ธุรกรรม: วิธีนี้ช่วยให้เราสามารถควบคุมการทำธุรกรรมหรือย้อนกลับตามสถานการณ์
3. ExecutesQL: วิธีนี้ใช้เพื่อดำเนินการสืบค้น SQL จริง
เปิดฐานข้อมูลวิธี Opendatabase เปิดฐานข้อมูลที่มีอยู่ หากฐานข้อมูลไม่มีอยู่ก็สามารถสร้างฐานข้อมูลได้ ไวยากรณ์สำหรับการสร้างและเปิดฐานข้อมูลมีดังนี้:
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
วิธีการ opendatabase ด้านบนใช้พารามิเตอร์ห้าตัวต่อไปนี้:
1. ชื่อฐานข้อมูล (MYDB)
2. หมายเลขเวอร์ชัน (1.0)
3. คำอธิบาย (ทดสอบ DB)
4. ขนาดฐานข้อมูล (2*1024*1024)
5. สร้างการโทรกลับ
อันสุดท้ายนั่นคือพารามิเตอร์ที่ห้าสร้างการโทรกลับซึ่งจะถูกเรียกเมื่อสร้างฐานข้อมูล แต่แม้จะไม่มีพารามิเตอร์นี้ฐานข้อมูลสามารถสร้างได้ที่รันไทม์
ดำเนินการค้นหาดำเนินการค้นหาโดยใช้ฟังก์ชัน Database.TransAction () ซึ่งต้องการพารามิเตอร์เดียวเท่านั้นและต่อไปนี้เป็นคำสั่งค้นหาจริง:
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('createTeableifnotexistslogs (idunique, log)');
- -
แบบสอบถามข้างต้นจะสร้างตารางบันทึกในฐานข้อมูล MYDB
แทรกการทำงานเพื่อที่จะแทรกระเบียนใหม่ลงในตารางเราได้เพิ่มแบบสอบถาม SQL อย่างง่ายลงในคำสั่ง Query ข้างต้นและคำสั่งที่แก้ไขมีดังนี้:
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('createTeableifnotexistslogs (idunique, log)');
- tx.executesql ('insertintologs (id, log) ค่า (1, foobar)');
- tx.executesql ('insertintologs (id, log) ค่า (2, logmsg)');
- -
เมื่อแทรกระเบียนใหม่เรายังสามารถผ่านค่าไดนามิกเช่น:
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('createTeableifnotexistslogs (idunique, log)');
- tx.executesql ('insertintologs
- (id, log) ค่า (?,? '), [e_id, e_log];
- -
ที่นี่ e_id และ e_log เป็นตัวแปรภายนอก, ExecutesQL แผนที่แต่ละรายการไป? ในพารามิเตอร์อาร์เรย์
อ่านการดำเนินการหากคุณต้องการอ่านบันทึกที่มีอยู่แล้วเราใช้การโทรกลับเพื่อจับภาพผลลัพธ์รหัสมีดังนี้:
ตัวอย่างที่สมบูรณ์
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('createTeableifnotexistslogs (idunique, log)');
- tx.executesql ('insertintologs (id, log) ค่า (1, foobar)');
- tx.executesql ('insertintologs (id, log) ค่า (2, logmsg)');
- -
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('เลือก*fromlogs', [], ฟังก์ชัน (tx, ผลลัพธ์) {
- varlen = results.rows.length, i;
- msg = <p> FoundRows:+Len+</p>;
- Document.QuerySelector ('#status'). innerhtml+= msg;
- สำหรับ (i = 0; i <len; i ++) {
- การแจ้งเตือน (results.rows.item (i) .log);
- -
- },โมฆะ);
- -
ในที่สุดเรานำเสนอสิ่งที่อธิบายไว้ก่อนหน้านี้ในเอกสาร HTML 5 ที่สมบูรณ์ในขณะที่ใช้เบราว์เซอร์เพื่อแยกวิเคราะห์เอกสาร HTML 5
- <! doctypehtml>
- <html>
- <head>
- <scriptType = text/javascript>
- VARDB = OpEndatabase ('MYDB', '1.0', 'TestDB', 2*1024*1024);
- Varmsg;
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('createTeableifnotexistslogs (idunique, log)');
- tx.executesql ('insertintologs (id, log) ค่า (1, foobar)');
- tx.executesql ('insertintologs (id, log) ค่า (2, logmsg)');
- msg = '<p> logmessagecreatedandrowinserted. </p>';
- Document.QuerySelector ('#status'). innerHtml = msg;
- -
- db.transaction (ฟังก์ชั่น (tx) {
- tx.executesql ('เลือก*fromlogs', [], ฟังก์ชัน (tx, ผลลัพธ์) {
- varlen = results.rows.length, i;
- msg = <p> FoundRows:+Len+</p>;
- Document.QuerySelector ('#status'). innerhtml+= msg;
- สำหรับ (i = 0; i <len; i ++) {
- msg = <p> <b>+results.rows.item (i) .log+</b> </p>;
- Document.QuerySelector ('#status'). innerhtml+= msg;
- -
- },โมฆะ);
- -
- </script>
- </head>
- <body>
- <divid = stationsName = Status> StatusMessage </div>
- </body>
- </html>
ด้านล่างเป็นผลลัพธ์ผลลัพธ์ที่ผลิตในเบราว์เซอร์ Safari หรือ Opera เวอร์ชันล่าสุด
- LogMessagecreatedandrowinsert
- Foundrows: 2
- คนโง่
- LogMSG