Latest web development tutorials

سكليتي - بيرل

تثبيت

SQLite3 يمكن استخدام بيرل DBI بيرل التكامل حدة. وحدة بيرل DBI هو وحدة الوصول إلى قاعدة البيانات بيرل لغة البرمجة. وهو يحدد مجموعة من الأساليب والمتغيرات وتوفر قواعد واجهة قاعدة البيانات القياسية.

ويبين ما يلي خطوات بسيطة لتثبيت وحدة DBI على أجهزة لينوكس / يونيكس:

$ مجلد مشترك http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz
$ قطران xvfz DBI-1.625.tar.gz
$ الكادميوم DBI-1.625
$ بيرل Makefile.PL
$ جعل
$ جعل تثبيت

إذا كنت بحاجة إلى تثبيت سائق سكليتي DBI ومن ثم يمكن تثبيت باتباع الخطوات التالية:

$ مجلد مشترك http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite-1.11.tar.gz
xvfz $ قطران DBD-سكليتي-1.11.tar.gz
$ الكادميوم DBD-سكليتي-1.11
$ بيرل Makefile.PL
$ جعل
$ جعل تثبيت

DBI اجهة API

وفيما يلي برنامج DBI هاما لتلبية الاحتياجات الخاصة بك باستخدام قاعدة بيانات SQLite في برامج بيرل. اذا كنت بحاجة الى مزيد من التفاصيل، يرجى الاطلاع على وثائق رسمية بيرل DBI.

序号API & 描述
1DBI->connect($data_source, "", "", \%attr)

建立一个到被请求的 $data_source 的数据库连接或者 session。如果连接成功,则返回一个数据库处理对象。

数据源形式如下所示:DBI:SQLite:dbname='test.db'。其中,SQLite 是 SQLite 驱动程序名称,test.db 是 SQLite 数据库文件的名称。如果文件名filename赋值为':memory:',那么它将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。

如果文件名 filename 为实际的设备文件名称,那么它将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,那么将创建一个新的命名为该名称的数据库文件。

您可以保留第二个和第三个参数为空白字符串,最后一个参数用于传递各种属性,详见下面的实例讲解。

2$dbh->do($sql)

该例程准备并执行一个简单的 SQL 语句。返回受影响的行数,如果发生错误则返回 undef。返回值 -1 意味着行数未知,或不适用 ,或不可用。在这里,$dbh 是由 DBI->connect() 调用返回的处理。

3$dbh->prepare($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() 打开的数据库连接。

الاتصال بقاعدة البيانات

يظهر رمز بيرل التالية كيفية الاتصال قاعدة بيانات موجودة. حالة عدم وجود قاعدة بيانات، يتم إنشاؤه، وأخيرا بإرجاع كائن قاعدة البيانات.

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي". 
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1}) 
                      أو يموت $ DBI :: errstr.

طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

الآن، دعونا تشغيل البرنامج المذكور أعلاه، إنشاءtest.db قاعدة البيانات الخاصة بنا في الدليل الحالي.يمكنك تغيير المسار حسب الحاجة. حفظ التعليمات البرمجية أعلاه لsqlite.pl الملف واضغط تتم على النحو التالي مبين. إذا تم إنشاء قاعدة البيانات بنجاح، فإنه سيتم عرض الرسالة هو موضح أدناه:

$ تطبيق التصريح + س sqlite.pl
$ ./sqlite.pl
فتح قاعدة البيانات بنجاح

إنشاء جدول

سيتم استخدام التعليمات البرمجية المتكررة بيرل التالية لإنشاء جدول في قاعدة البيانات التي تم إنشاؤها مسبقا:

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي".
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1})
                      أو يموت $ DBI :: errstr.
طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

بلدي $ stmt = ف (إنشاء المقاولة الجدول
      (ID INT PRIMARY KEY NOT NULL،
       النص اسم NOT NULL،
       AGE INT NOT NULL،
       شار عنوان (50)،
       ريال راتب)؛)؛
بلدي $ رف = $ dbh-> القيام به ($ stmt)؛
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
} {شيء آخر
   طباعة "الجدول بنجاح إنشاء \ ن".
}
$ Dbh-> قطع ()؛

عندما الإجراء أعلاه، فإنه يخلق الجدول شركة فيtest.db ويعرض الرسالة هو مبين أدناه:

قاعدة البيانات المفتوحة بنجاح
جدول تم إنشاؤه بنجاح

ملاحظة: إذا واجهت الخطأ التالية في أي عملية: في حال كنت ترى الخطأ التالية في أي من هذه العملية:

DBD :: :: سكليتي الحادي وتنفيذ فشل: ليس خطأ (21) في خط dbdimp.c 398

في هذه الحالة، قمت بفتح DBD-سكليتي المثبتة في ملف dbdimp.c المتاحة، والعثور على وظيفةsqlite3_prepare ()، وهذا هو المعلمة الثالث 0 إلى -1.وأخيرا، واستخدامجعل وجعل تثبيتلتثبيت دبد:: سكليتي، يمكنك حل هذه المشكلة. في هذه الحالة سيكون لديك مفتوحة dbdimp.c الملفات المتوفرة في تركيب DBD-سكليتي ومعرفة sqlite3_prepare () وظيفة وتغيير الحجة الثالثة إلى -1 بدلا من 0. وأخيرا تثبيت دبد:: سكليتي باستخدام جعل ولا تجعل تثبيت لحل المشكلة.

عملية INSERT

يقوم البرنامج بعرض بيرل التالي كيفية إنشاء السجلات في الجدول شركة تم إنشاؤها أعلاه:

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي".
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1})
                      أو يموت $ DBI :: errstr.
طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

بلدي $ stmt = ف (INSERT INTO شركة (ID، الاسم والعمر والعنوان، راتب)
      VALUES (1، 'بول'، 32، 'كاليفورنيا'، 20000.00))؛
بلدي $ رف = $ dbh-> تفعل (stmt $) أو يموت $ DBI :: errstr.

$ Stmt = ف (INSERT INTO شركة (ID، الاسم والعمر والعنوان، راتب)
      VALUES (2، "ألين"، 25، "تكساس"، 15000.00))؛
$ رف = $ dbh-> القيام به (stmt $) أو يموت $ DBI :: errstr.

$ Stmt = ف (INSERT INTO شركة (ID، الاسم والعمر والعنوان، راتب)
      VALUES (3، 'تيدي'، 23، 'النرويج'، 20000.00))؛
$ رف = $ dbh-> القيام به (stmt $) أو يموت $ DBI :: errstr.

$ Stmt = ف (INSERT INTO شركة (ID، الاسم والعمر والعنوان، راتب)
      VALUES (4، "مارك (25 عاما)" ريتش موند "، 65000.00)؛)؛
$ رف = $ dbh-> القيام به (stmt $) أو يموت $ DBI :: errstr.

طباعة "السجلات التي تم إنشاؤها بنجاح \ ن".
$ Dbh-> قطع ()؛

يتم تنفيذ البرنامج المذكور أعلاه، فإنه سيتم إنشاء في الجدول شركة لسجل معين، ويعرض السطرين التاليين:

قاعدة البيانات المفتوحة بنجاح
السجلات التي تم إنشاؤها بنجاح

عمليات SELECT

يقوم البرنامج بعرض بيرل التالية كيفية الحصول عليها من الجدول الشركة التي تم إنشاؤها في وقت سابق ويعرض سجل:

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي".
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1})
                      أو يموت $ DBI :: errstr.
طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

بلدي $ stmt = ف (SELECT الهوية، والاسم والعنوان وراتب من الشركة؛)؛
بلدي $ لك شيء = $ dbh-> إعداد ($ stmt)؛
بلدي $ رف = $ sth-> تنفيذ () أو يموت $ DBI :: errstr.
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
}
بينما (بلديrow = $ sth-> fetchrow_array ()) {
      طباعة "ID =" $ التوالي [0] "\ ن" ..؛
      . طباعة "NAME =" $ التوالي [1] "\ ن"؛
      . طباعة "عنوان =" $ التوالي [2] "\ ن"؛
      . طباعة "راتب =" $ التوالي [3] "\ ن \ ن"؛
}
طباعة "عملية فعلت بنجاح \ ن".
$ Dbh-> قطع ()؛

عندما يتم تنفيذ البرنامج المذكور أعلاه، وسوف تؤدي إلى النتائج التالية:

قاعدة البيانات المفتوحة بنجاح
ID = 1
NAME = بول
عنوان = كاليفورنيا
راتب = 20000

ID = 2
NAME = ألين
عنوان = تكساس
راتب = 15000

ID = 3
NAME = تيدي
عنوان = النرويج
راتب = 20000

ID = 4
NAME = كافة
عنوان = ريتش موند
راتب = 65000

العملية تمت العملية بنجاح

عملية تحديث

يظهر رمز بيرل التالي كيفية استخدام عبارة UPDATE لتحديث أي سجلات، ثم الحصول من الجدول الشركة وعرض سجل تحديث:

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي".
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1})
                      أو يموت $ DBI :: errstr.
طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

(مجموعة شركة استكمال راتب = 25000.00 حيث ID = 1؛) ي $ stmt = ف ف.
بلدي $ رف = $ dbh-> تفعل (stmt $) أو يموت $ DBI :: errstr.
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
} {شيء آخر
   طباعة "عدد الصفوف تحديث: $ رف ن \".
}
$ Stmt = ف (معرف SELECT، الاسم، العنوان، الراتب من الشركة؛)؛
بلدي $ لك شيء = $ dbh-> إعداد ($ stmt)؛
$ رف = $ sth-> تنفيذ () أو يموت $ DBI :: errstr.
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
}
بينما (بلديrow = $ sth-> fetchrow_array ()) {
      طباعة "ID =" $ التوالي [0] "\ ن" ..؛
      . طباعة "NAME =" $ التوالي [1] "\ ن"؛
      . طباعة "عنوان =" $ التوالي [2] "\ ن"؛
      . طباعة "راتب =" $ التوالي [3] "\ ن \ ن"؛
}
طباعة "عملية فعلت بنجاح \ ن".
$ Dbh-> قطع ()؛

عندما يتم تنفيذ البرنامج المذكور أعلاه، وسوف تؤدي إلى النتائج التالية:

قاعدة البيانات المفتوحة بنجاح
إجمالي عدد الصفوف تحديث: 1
ID = 1
NAME = بول
عنوان = كاليفورنيا
راتب = 25000

ID = 2
NAME = ألين
عنوان = تكساس
راتب = 15000

ID = 3
NAME = تيدي
عنوان = النرويج
راتب = 20000

ID = 4
NAME = كافة
عنوان = ريتش موند
راتب = 65000

العملية تمت العملية بنجاح

عملية الحذف

يظهر رمز بيرل التالي كيفية استخدام عبارة DELETE حذف أي سجلات، ثم تؤخذ من الجدول الشركة ويعرض تسجيل المتبقية:

#! / البيرة / بن / بيرل

استخدام DBI.
استخدام صارمة.

بلدي $ سائق = "سكليتي".
$ قاعدة البيانات الخاصة بي = "test.db".
بلدي $ DSN = "DBI: $ السائق: DBNAME = $ قاعدة بيانات".
بلدي $ حاليا = ""؛
بلدي $ كلمة المرور = ""؛
بلدي $ DBH = DBI-> اتصال (دسن $، $ حاليا، $ كلمة السر، {RaiseError => 1})
                      أو يموت $ DBI :: errstr.
طباعة "قاعدة البيانات المفتوحة بنجاح \ ن".

بلدي $ stmt = ف (DELETE من شركة حيث ID = 2؛)؛
بلدي $ رف = $ dbh-> تفعل (stmt $) أو يموت $ DBI :: errstr.
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
} {شيء آخر
   طباعة "إجمالي عدد الصفوف المحذوفة: $ رف ن \".
}
$ Stmt = ف (معرف SELECT، الاسم، العنوان، الراتب من الشركة؛)؛
بلدي $ لك شيء = $ dbh-> إعداد ($ stmt)؛
$ رف = $ sth-> تنفيذ () أو يموت $ DBI :: errstr.
إذا ($ رف <0) {
   طباعة $ DBI :: errstr.
}
بينما (بلديrow = $ sth-> fetchrow_array ()) {
      طباعة "ID =" $ التوالي [0] "\ ن" ..؛
      . طباعة "NAME =" $ التوالي [1] "\ ن"؛
      . طباعة "عنوان =" $ التوالي [2] "\ ن"؛
      . طباعة "راتب =" $ التوالي [3] "\ ن \ ن"؛
}
طباعة "عملية فعلت بنجاح \ ن".
$ Dbh-> قطع ()؛

عندما يتم تنفيذ البرنامج المذكور أعلاه، وسوف تؤدي إلى النتائج التالية:

قاعدة البيانات المفتوحة بنجاح
إجمالي عدد الصفوف حذف: 1
ID = 1
NAME = بول
عنوان = كاليفورنيا
راتب = 25000

ID = 3
NAME = تيدي
عنوان = النرويج
راتب = 20000

ID = 4
NAME = كافة
عنوان = ريتش موند
راتب = 65000

العملية تمت العملية بنجاح