English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يمكن استخدام SQLite3 مع مكتبة Perl DBI لتكامل Perl.مكتبة Perl DBI هي مكتبة الوصول إلى قاعدة البيانات لغة البرمجة Perl.إنها تعريف مجموعة من الطرق والمتغيرات والقواعد التي توفر واجهة قاعدة البيانات المعيارية.
تم عرض الخطوات البسيطة لتثبيت مكتبة DBI على أجهزة Linux/UNIX أدناه:
$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz $ tar xvfz DBI-1.625.tar.gz $ cd DBI-1.625 $ perl Makefile.PL $ make $ make install
إذا كنت بحاجة إلى تثبيت محرك SQLite لـ DBI،يمكنك اتباع الخطوات التالية للاستخدام:
$ wget http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite-1.11.tar.gz $ tar xvfz DBD-SQLite-1.11.tar.gz $ cd DBD-SQLite-1.11 $ perl Makefile.PL $ make $ make install
البرامج المهمة الخاصة بـ DBI أدناه يمكنها تلبية احتياجاتك في استخدام قاعدة بيانات SQLite في برامج Perl.إذا كنت بحاجة إلى مزيد من التفاصيل،يرجى الرجوع إلى وثائق Perl DBI الرسمية.
رقم التسلسل | API & الوصف |
---|---|
1 | DBI->connect($data_source, "", "", \%attr) يتم إنشاء اتصال بقاعدة بيانات أو جلسة يتم طلبها من $data_source.إذا تم اكتمال الاتصال،يتم إرجاع كائن معالجة قاعدة البيانات. يظهر شكل المصدر البياني كما يلي:DBI:SQLite:dbname='test.db'،حيث أن SQLite هو اسم برنامج قاعدة البيانات SQLite،test.db هو اسم ملف قاعدة البيانات SQLite.إذا كان اسم الملف filename تم تعيينها ك ':memory:'،إذا كان ذلك،فسيقوم بإنشاء قاعدة بيانات ذاكرة في RAM،وذلك سيستمر فقط خلال فترة صلاحية الجلسة. إذا كان اسم الملف filename هو اسم ملف الجهاز الفعلي، فإنه سيحاول فتح ملف قاعدة البيانات باستخدام هذه القيمة. إذا لم يكن موجودًا ملف بهذا الاسم، سيتم إنشاء ملف جديد يُسمى بنفس الاسم. يمكنك ترك الثانية والثالثة كنص فارغ، والثاني الأخير لتحويل الخصائص المختلفة، انظر إلى الأمثلة التالية. |
2 | $dbh->do($sql) يعد هذا الدوالية بإعداد وتنفيذ جملة SQL بسيطة. يعود عدد السطور المتأثرة، إذا حدث خطأ يتم العودة إلى undef. يعني العودة ب -1 أن عدد السطور غير معروف أو غير صالح أو غير متاح. هنا، $dbh هو عامل المعالجة الذي يعود من DBI->connect(). |
3 | $dbh->prepare($sql) يعد هذا الدوالية لإعداد جملة SQL للتنفيذ فيما بعد، ويقوم بتحويلها إلى عامل جملة. |
4 | $sth->execute() يؤدي هذا الدوالية إلى تنفيذ أي معالجة تحتاج إلى تنفيذ جملة مسبقة التحضير. إذا حدث خطأ، يتم العودة إلى undef. إذا تم تنفيذها بنجاح، فإنها دائمًا تعود إلى true، بغض النظر عن عدد السطور المتأثرة. هنا، $sth هو عامل الجملة الذي يعود من $dbh->prepare($sql). |
5 | $sth->fetchrow_array() يحصل هذا الدوالية على السطر التالي من البيانات ويقوم بتحويله إلى قائمة تحتوي على قيم الحقول. يتم تحويل الحقل Null إلى قيمة undef في هذه القائمة. |
6 | $DBI::err هذا يساوي $h->err. حيث، $h هو أي نوع معالجة، مثل $dbh، $sth أو $drh. يعود البرنامج ب رمز خطأ للطريقة الأخيرة التي تم استدعاؤها من الدواء (driver). |
7 | $DBI::errstr هذا يساوي $h->errstr. حيث، $h هو أي نوع معالجة، مثل $dbh، $sth أو $drh. يعود البرنامج ب رسالة خطأ لآلة قاعدة البيانات للطريقة الأخيرة التي تم استدعاؤها من DBI. |
8 | $dbh->disconnect() يغلق هذا الدوالية الاتصال بقاعدة البيانات المفتوح عبر DBI->connect(). |
الكود Perl التالي يوضح كيفية الاتصال بقاعدة بيانات موجودة. إذا لم تكن قاعدة البيانات موجودة، سيتم إنشاؤها، وأخيرًا سيتم العودة إلى عامل قاعدة البيانات.
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n";
الآن، دعونا نن�行 البرنامج المذكور أعلاه، لإنشاء قاعدة بيانات في الدليل الحالي test.dbيمكنك تغيير المسار حسب الحاجة. احفظ الكود المذكور أعلاه في ملف sqlite.pl، ثم قم بتنفيذ ما يلي. إذا تم إنشاء قاعدة البيانات بنجاح، سيتم عرض الرسالة التالية:
$ chmod +x sqlite.pl $ ./sqlite.pl تم فتح قاعدة البيانات بنجاح
أولاً، سنقوم بإنشاء جدول في قاعدة البيانات التي تم إنشاؤها مسبقًا باستخدام هذا الجزء من البرنامج Perl:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n"; my $stmt = qq(CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);); my $rv = $dbh->do($stmt); if($rv < 0){ print $DBI::errstr; } else { print "Table created successfully\n"; } $dbh->disconnect();
عندما يتم تنفيذ البرنامج أعلاه، سيتم test.db لإنشاء جدول COMPANY في الداخل، وعرض الرسالة التالية كما يلي:
تم فتح قاعدة البيانات بنجاح تم إنشاء الجدول بنجاح
ملاحظة:إذا واجهت أي خطأ أدناه أثناء أي عملية: في حالة رؤيتك للخطأ التالي في أي عملية:
فشل تنفيذ DBD::SQLite::st: ليس خطأ (21) في خط 398 من dbdimp.c
في هذه الحالة، ستجد ملف dbdimp.c المفتوح المتاح في تثبيت DBD-SQLite وابحث عن sqlite3_prepare() وغير المعامل الثالثة إلى -1 بدلاً من 0. في النهاية، استخدم تثبيت و تثبيت البرنامج تثبيت DBD::SQLite لحل المشكلة. في هذه الحالة، سيكون لديك ملف dbdimp.c المفتوح المتاح في تثبيت DBD-SQLite وابحث عن sqlite3_prepare() وغير الثالثة من معاملاته إلى -1 بدلاً من 0. في النهاية، قم بتثبيت DBD::SQLite باستخدام تثبيت ويفعل تثبيت البرنامج لحل المشكلة.
برنامج Perl التالي يوضح كيفية إنشاء سجلات في جدول COMPANY الذي تم إنشاؤه أعلاه:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n"; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 )); my $rv = $dbh->do($stmt) or die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );); $rv = $dbh->do($stmt) or die $DBI::errstr; print "تم إنشاء السجلات بنجاح\n"; $dbh->disconnect();
عند تنفيذ البرنامج المذكور أعلاه، سيتم إنشاء السجلات المحددة في جدول COMPANY ويتم عرض السطور التالية:
تم فتح قاعدة البيانات بنجاح تم إنشاء السجلات بنجاح
برنامج Perl التالي يوضح كيفية الحصول على وتحليل السجلات من جدول COMPANY الذي تم إنشاؤه سابقًا:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n"; my $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); my $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "تم إكمال العمل بنجاح\n"; $dbh->disconnect();
عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم إنتاج النتائج التالية:
تم فتح قاعدة البيانات بنجاح ID = 1 NAME = Paul ADDRESS = California SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 تم إكمال العمل بنجاح
كود Perl التالي يوضح كيفية استخدام جملة UPDATE لإضافة أي سجل، ثم الحصول على وتحليل السجلات المعدلة من جدول COMPANY:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n"; my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;); my $rv = $dbh->do($stmt) or die $DBI::errstr; if( $rv < 0 ){ print $DBI::errstr; } print "عدد الأسطر المعدلة بشكل إجمالي: $rv\n"; } $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "تم إكمال العمل بنجاح\n"; $dbh->disconnect();
عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم إنتاج النتائج التالية:
تم فتح قاعدة البيانات بنجاح عدد الأسطر المعدلة بشكل إجمالي: 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 تم إكمال العمل بنجاح
كود Perl التالي يوضح كيفية استخدام جملة DELETE لإزالة أي سجل، ثم الحصول على وتحليل السجلات المتبقية من جدول COMPANY:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "تم فتح قاعدة البيانات بنجاح\n"; my $stmt = qq(DELETE from COMPANY where ID=2;); my $rv = $dbh->do($stmt) or die $DBI::errstr; if( $rv < 0 ){ print $DBI::errstr; } print "عدد السطور المزالة بالكامل: $rv\n"; } $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "تم إكمال العمل بنجاح\n"; $dbh->disconnect();
عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم إنتاج النتائج التالية:
تم فتح قاعدة البيانات بنجاح عدد السطور المزالة بالكامل: 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 تم إكمال العمل بنجاح