ألسلام عليكم تحية طبية للجميع يوجد لدى تطبيق React native يعمل بقاعدة sqlite
اريد كتابة امر واحد فقط يقوم باانشاء جدول ثم تسجيل بيانات افتراضية داخل الجدول عند انشاءه كل هاذا فى امر واحد فقك مثال
create table user (name varchar(200) )
كيف يمكن اضافة بينات داخل الجدول فى نفس الامر
سيكون الكود بالشكل التالي:
import SQLite from 'react-native-sqlite-storage';
const db = SQLite.openDatabase({ name: 'mydatabase.db' });
db.transaction((tx) => {
tx.executeSql(
`CREATE TABLE IF NOT EXISTS user (name VARCHAR(200))`,
[],
(_, result) => {
tx.executeSql(
`INSERT INTO user (name) VALUES ('John'), ('Jane'), ('Adam')`,
[],
(_, result) => {
console.log('جدول المستخدمين تم إنشاؤه وتمت إضافة البيانات الافتراضية بنجاح.');
},
(_, error) => {
console.log('حدث خطأ أثناء إضافة البيانات الافتراضية:', error);
}
);
},
(_, error) => {
console.log('حدث خطأ أثناء إنشاء جدول المستخدمين:', error);
}
);
});
حيث نستخدم أولاً مكتبة react-native-sqlite-storage للتعامل مع قاعدة البيانات SQLite في تطبيق React Native، ثم فتح قاعدة البيانات باستخدام SQLite.openDatabase وتمرير اسم قاعدة البيانات المراد استخدامها.
ثم نستخدم db.transaction لتنفيذ المعاملة، حيث ننفذ أمر إنشاء الجدول باستخدام tx.executeSql ونمرر الأمر SQL "CREATE TABLE IF NOT EXISTS user (name VARCHAR(200))".
ثم في حالة نجاح إنشاء الجدول، نستخدم tx.executeSql مرة أخرى لإضافة البيانات الافتراضية إلى الجدول باستخدام الأمر SQL "INSERT INTO user (name) VALUES ('John'), ('Jane'), ('Adam')"، نمرر البيانات الافتراضية في القوس المربع بين القوسين.
وإذا تم تنفيذ الأمر بنجاح، ستظهر رسالة تأكيد على وحدة التحكم تفيد بأن جدول المستخدمين تم إنشاؤه وتمت إضافة البيانات الافتراضية بنجاح، وفي حال حدث خطأ، سيتم طباعة رسالة توضح طبيعة الخطأ.
حاول إضافة شرط يتحقق قبل إنشاء الجدول وإضافة البيانات الافتراضية باستخدام دالة executeSql لتنفيذ استعلام SQL لفحص ما إذا كان الجدول موجودًا بالفعل قبل إنشائه وإضافة البيانات الافتراضية، كالتالي:
import SQLite from 'react-native-sqlite-storage';
const db = SQLite.openDatabase({ name: 'mydatabase.db' });
db.transaction((tx) => {
tx.executeSql(
`SELECT name FROM sqlite_master WHERE type='table' AND name='user'`,
[],
(_, result) => {
if (result.rows.length === 0) {
tx.executeSql(
`CREATE TABLE user (name VARCHAR(200))`,
[],
(_, result) => {
tx.executeSql(
`INSERT INTO user (name) VALUES ('John'), ('Jane'), ('Adam')`,
[],
(_, result) => {
console.log('جدول المستخدمين تم إنشاؤه وتمت إضافة البيانات الافتراضية بنجاح.');
},
(_, error) => {
console.log('حدث خطأ أثناء إضافة البيانات الافتراضية:', error);
}
);
},
(_, error) => {
console.log('حدث خطأ أثناء إنشاء جدول المستخدمين:', error);
}
);
} else {
console.log('جدول المستخدمين موجود بالفعل.');
}
},
(_, error) => {
console.log('حدث خطأ أثناء البحث عن الجدول:', error);
}
);
});
قمت بإضافة استعلام SQL جديد باستخدام tx.executeSql للبحث عن وجود الجدول بالفعل، وإذا كان عدد الصفوف المُرجَعة من النتيجة result.rows.length يساوي 0، فذلك يعني أن الجدول غير موجود ويمكن إنشاؤه وإضافة البيانات الافتراضية، وفي حال كانت القيمة غير 0، فذلك يعني أن الجدول موجود بالفعل ولن يتم تنفيذ الإجراءات.
وبالطبع يجب حذف قاعدة البيانات السابقة أو مسح الجدول لتجنب ظهور بيانات مكررة.
التعليقات