لم يتم تضمين واجهة برمجة تطبيقات قاعدة بيانات الويب SQL بالفعل في مواصفات HTML 5. إنها مواصفات مستقلة تقدم مجموعة من واجهات برمجة التطبيقات التي تستخدم SQL لتشغيل قواعد بيانات العميل. على افتراض أنك مطور ويب ممتاز ، فلا شك أنك على دراية بالمفاهيم المتعلقة بقواعد البيانات SQL وقواعد البيانات. إذا لم تكن على دراية بـ SQL ، فاستمر في القراءة. قبل هذه المقالة ، من الأفضل تعلم البرامج التعليمية المتعلقة بـ SQL أولاً.
تدعم أحدث إصدارات Chrome و Safari و Opera جميع قواعد بيانات الويب SQL.
الأساليب الأساسيةستقدم هذه المقالة ثلاث طرق أساسية محددة في المواصفات:
1. Opendatabase: تستخدم هذه الطريقة قاعدة بيانات موجودة أو تنشئ قاعدة بيانات جديدة لإنشاء كائن قاعدة بيانات.
2. المعاملة: تتيح لنا هذه الطريقة التحكم في التزام المعاملات أو التراجع وفقًا للموقف.
3. ينفذ executesql: يتم استخدام هذه الطريقة لتنفيذ استعلامات SQL الحقيقية.
افتح قاعدة البياناتتفتح طريقة Opendatabase قاعدة بيانات موجودة. إذا لم تكن قاعدة البيانات موجودة ، فيمكنها أيضًا إنشاء قاعدة بيانات. بناء الجملة لإنشاء وفتح قاعدة البيانات كما يلي:
- vardb = opendatabase ('mydb' ، '1.0' ، 'testDB' ، 2*1024*1024) ؛
تستخدم طريقة Opendatabase أعلاه المعلمات الخمسة التالية:
1. اسم قاعدة البيانات (MYDB)
2. رقم الإصدار (1.0)
3. الوصف (اختبار ديسيبل)
4. حجم قاعدة البيانات (2*1024*1024)
5. إنشاء رد اتصال
آخر واحد ، أي المعلمة الخامسة ، تنشئ رد اتصال ، والذي سيتم استدعاؤه عند إنشاء قاعدة البيانات ، ولكن حتى بدون هذه المعلمة ، يمكن إنشاء قاعدة البيانات في وقت التشغيل.
تنفيذ استعلامتنفيذ الاستعلام باستخدام دالة Database.Transaction () ، والتي تتطلب فقط معلمة واحدة ، والما يلي عبارة عن بيان استعلام حقيقي:
- vardb = opendatabase ('mydb' ، '1.0' ، 'testDB' ، 2*1024*1024) ؛
- db.transaction (function (tx) {
- tx.executesql ('createTableIfNotexistsLogs (idunique ، log)') ؛
- }) ؛
سيقوم الاستعلام أعلاه بإنشاء جدول سجلات في قاعدة بيانات MYDB.
أدخل العمليةمن أجل إدراج سجل جديد في الجدول ، أضفنا استعلام SQL بسيطًا إلى بيان الاستعلام أعلاه ، والبيان المعدل كما يلي:
- vardb = opendatabase ('mydb' ، '1.0' ، 'testDB' ، 2*1024*1024) ؛
- db.transaction (function (tx) {
- tx.executesql ('createTableIfNotexistsLogs (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 (function (tx) {
- tx.executesql ('createTableIfNotexistsLogs (idunique ، log)') ؛
- tx.executesql ('insertintologs
- (معرف ، سجل) القيم (؟ ،؟ ') ، [e_id ، e_log] ؛
- }) ؛
هنا E_ID و E_LOG متغيرات خارجية ، ينفذ خرائط كل عنصر؟ في المعلمات الصفيف.
قراءة العمليةإذا كنت ترغب في قراءة السجل الموجود بالفعل ، فإننا نستخدم رد اتصال لالتقاط النتيجة ، فإن الرمز هو كما يلي:
مثال كامل
- vardb = opendatabase ('mydb' ، '1.0' ، 'testDB' ، 2*1024*1024) ؛
- db.transaction (function (tx) {
- tx.executesql ('createTableIfNotexistsLogs (idunique ، log)') ؛
- tx.executesql ('insertintologs (id ، log) قيم (1 ، foobar)') ؛
- tx.executesql ('insertIntologs (id ، log) قيم (2 ، logmsg)') ؛
- }) ؛
- db.transaction (function (tx) {
- tx.executesql ('select*fromlogs' ، [] ، function (tx ، results) {
- varlen = results.rows.length ، i ؛
- msg = <p> besterrows:+len+</p> ؛
- document.queryselector ('#status'). innerhtml+= msg ؛
- لـ (i = 0 ؛ i <len ؛ i ++) {
- ALERT (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 (function (tx) {
- tx.executesql ('createTableIfNotexistsLogs (idunique ، log)') ؛
- tx.executesql ('insertintologs (id ، log) قيم (1 ، foobar)') ؛
- tx.executesql ('insertIntologs (id ، log) قيم (2 ، logmsg)') ؛
- msg = '<p> logMessageCreatedRowInserted. </p>' ؛
- document.queryselector ('#status'). innerhtml = msg ؛
- }) ؛
- db.transaction (function (tx) {
- tx.executesql ('select*fromlogs' ، [] ، function (tx ، results) {
- varlen = results.rows.length ، i ؛
- msg = <p> besterrows:+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 = statusName = status> statusMessage </iv>
- </body>
- </html>
فيما يلي نتيجة الإخراج المنتجة في أحدث إصدار من Safari أو Opera Browser.
- logMessageCreatedAndRowInserted.
- المسبح: 2
- Foobar
- logmsg