کتابخانه‌ی استاندارد · پایگاه داده

اس کیو لایت db/sqlite

پایگاه داده‌ی SQLite در یک پرونده یا در حافظه.

واردسازی دیتابیس.اس کیو لایت
در این صفحه
  1. گونه‌ها
  2. روال‌ها

SQLite پایگاه داده‌ای است که در یک پرونده جا می‌شود و سرور لازم ندارد؛ برای برنامه‌های رومیزی، ابزارها و بسیاری از سایت‌ها کافی است. برای اجرا کتابخانه‌ی sqlite3 باید روی سیستم باشد.

دو راه کار هست: روال‌های این بسته، مثل پرسمان و بعدی، که به همه‌ی امکانات SQLite می‌رسند؛ یا متدهای پایگاه داده و ردیف‌ها و اتصال که همان رابط مشترک دیتابیس است. مقدارهای کاربر را با آماده سازی و روال‌های اتصال ... بفرستید، نه با چسباندن به متن SQL.

گونه‌ها

پایگاه داده Database

ساختار پایگاه داده
یک پایگاه داده‌ی SQLite باز.
نامانگلیسیگونهتوضیح
handlehandleتهی*اشاره‌گر SQLite.
db-sqlite-Methods.salam
واردسازی دیتابیس
واردسازی دیتابیس.اس کیو لایت

روال ریشه:
    پ := اس کیو لایت.بازکردن(":memory:")
    سرچاپ پ.نوع()، پ.معتبر()، پ.پینگ()
    _ := پ.اجرا("CREATE TABLE notes (id INTEGER PRIMARY KEY, body TEXT, stars REAL)")
    _ := پ.اجرا("INSERT INTO notes (body, stars) VALUES (" + پ.نقل قول("یادداشتِ 'اول'") + ", 4.5)")
    سرچاپ پ.شناسه آخرین درج()، پ.تعداد تغییرات()

    ت := پ.شروع تراکنش()
    _ := ت.اجرا("INSERT INTO notes (body) VALUES ('دوم')")
    تر := ت.پرسمان("SELECT COUNT(*) FROM notes")
    _ := تر.بعدی()
    سرچاپ تر.عدد صحیح(۰)
    _ := تر.بستن()
    سرچاپ ت.معتبر()، ت.ثبت تراکنش()

    ر := پ.پرسمان("SELECT id, body, stars FROM notes ORDER BY id")
    سرچاپ ر.معتبر()، ر.تعداد ستون()، ر.نام ستون(۲)
    تا ر.بعدی():
        ناپایا ستاره := "-"
        اگر وارونه ر.خالی است(۲):
            ستاره = "" + ر.عدد اعشار(۲)
        پایان
        سرچاپ ر.عدد صحیح۶۴(۰)، ر.متن(۱)، ستاره، ر.نوع ستون(۲)
    پایان
    _ := ر.بستن()

    ت۲ := پ.شروع تراکنش()
    _ := ت۲.اجرا("DELETE FROM notes")
    _ := ت۲.بازگردانی()
    ا := اس کیو لایت.اتصال(پ)
    سرچاپ دیتابیس.پرسمان عدد(ا، "SELECT COUNT(*) FROM notes")
    سرچاپ پ.اجرا("DROP TABLE nope") != ۰، پ.خطا()
    سرچاپ پ.بستن()
پایان
خروجیsqlite true true 1 1 2 true 0 true 3 stars 1 یادداشتِ 'اول' 4.5 2 2 دوم - 0 2 true no such table: nope 0

نوع Kind

روال نوع(): رشته
نام موتور پایگاه داده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

معتبر Ok

روال معتبر(): منطقی
سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

پینگ Ping

روال پینگ(): منطقی
اتصال زنده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

اجرا Exec

روال اجرا(sql: رشته): صحیح
دستوری را اجرا می‌کند؛ صفر یعنی موفق.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

پرسمان Query

روال پرسمان(sql: رشته): dyn db.ردیف ها
پرسمانی را اجرا می‌کند و ردیف‌ها را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

شروع تراکنش Begin

روال شروع تراکنش(): dyn db.Tx
تراکنشی آغاز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

شناسه آخرین درج LastInsertId

روال شناسه آخرین درج(): صحیح۶۴
شناسه‌ی آخرین ردیف درج‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

تعداد تغییرات Changes

روال تعداد تغییرات(): صحیح۶۴
شمار ردیف‌هایی که آخرین دستور تغییر داد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

خطا Error

روال خطا(): رشته
آخرین پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

نقل قول Quote

روال نقل قول(s: رشته): رشته
رشته را با نقل‌قول و گریز امن برای SQL برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

بستن Close

روال بستن(): صحیح
می‌بندد و آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

ردیف ها Rows

ساختار ردیف ها
یک دستور آماده یا نتیجه‌ی پرسمان.
نامانگلیسیگونهتوضیح
handlehandleتهی*اشاره‌گر دستور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

معتبر Ok

روال معتبر(): منطقی
سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

بعدی Next

روال بعدی(): منطقی
به ردیف بعدی می‌رود؛ اگر ردیفی نماند، نادرست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

تعداد ستون ColumnCount

روال تعداد ستون(): صحیح
شمار ستون‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

نام ستون ColumnName

روال نام ستون(col: صحیح): رشته
نام ستون.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

نوع ستون ColumnType

روال نوع ستون(col: صحیح): صحیح
گونه‌ی مقدار ستون در ردیف جاری، یکی از ثابت‌های نوع ... در دیتابیس؛ برای تهی صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

خالی است IsNull

روال خالی است(col: صحیح): منطقی
مقدار ستون تهی است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

متن Text

روال متن(col: صحیح): رشته
مقدار ستون به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

عدد صحیح Int

روال عدد صحیح(col: صحیح): صحیح
مقدار ستون به شکل عدد صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

عدد صحیح۶۴ Int64

روال عدد صحیح۶۴(col: صحیح): صحیح۶۴
مقدار ستون به شکل عدد ۶۴ بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

عدد اعشار Float

روال عدد اعشار(col: صحیح): اعشار۶۴
مقدار ستون به شکل اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

بستن Close

روال بستن(): صحیح
می‌بندد و آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Methods.salam

تراکنش Txn

ساختار تراکنش
یک تراکنش.
نامانگلیسیگونهتوضیح
handlehandleتهی*اشاره‌گر پایگاه داده.
db-sqlite-Basics.salam
واردسازی دیتابیس.اس کیو لایت

روال ریشه:
    سرچاپ اس کیو لایت.در دسترس()، اس کیو لایت.نسخه().طول() > ۰
    پ := اس کیو لایت.بازکردن(":memory:")
    سرچاپ اس کیو لایت.معتبر(پ)
    _ := اس کیو لایت.اجرا(پ، "CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT NOT NULL, pages INTEGER, price REAL, note TEXT)")
    _ := اس کیو لایت.اجرا(پ، "INSERT INTO books (title, pages, price) VALUES ('شازده کوچولو', 96, 4.5)")
    سرچاپ اس کیو لایت.شناسه آخرین درج(پ)، اس کیو لایت.تعداد تغییرات(پ)

    د := اس کیو لایت.آماده سازی(پ، "INSERT INTO books (title, pages, price, note) VALUES (?, ?, ?, ?)")
    سرچاپ اس کیو لایت.دستور معتبر(د)
    _ := اس کیو لایت.اتصال متن(د، ۱، "بوف کور")
    _ := اس کیو لایت.اتصال عدد(د، ۲، ۱۲۰)
    _ := اس کیو لایت.اتصال اعشار(د، ۳، ۶.۲۵)
    _ := اس کیو لایت.اتصال خالی(د، ۴)
    _ := اس کیو لایت.بعدی(د)
    _ := اس کیو لایت.بازنشانی(د)
    _ := اس کیو لایت.اتصال متن(د، ۱، "سووشون")
    _ := اس کیو لایت.اتصال عدد(د، ۲، ۳۰۴)
    _ := اس کیو لایت.اتصال اعشار(د، ۳، ۹)
    _ := اس کیو لایت.اتصال متن(د، ۴، "کلاسیک")
    _ := اس کیو لایت.بعدی(د)
    _ := اس کیو لایت.پایان(د)
    سرچاپ اس کیو لایت.مجموع تغییرات(پ)

    ر := اس کیو لایت.پرسمان(پ، "SELECT id, title, pages, price, note FROM books ORDER BY id")
    سرچاپ اس کیو لایت.تعداد ستون(ر)، اس کیو لایت.نام ستون(ر، ۱)
    تا اس کیو لایت.بعدی(ر):
        ناپایا یادداشت := "-"
        اگر وارونه اس کیو لایت.خالی است(ر، ۴):
            یادداشت = اس کیو لایت.متن(ر، ۴)
        پایان
        سرچاپ اس کیو لایت.عدد صحیح(ر، ۰)، اس کیو لایت.متن(ر، ۱)، اس کیو لایت.عدد صحیح۶۴(ر، ۲)، اس کیو لایت.عدد اعشار(ر، ۳)، یادداشت
    پایان
    _ := اس کیو لایت.پایان(ر)

    ن := اس کیو لایت.پرسمان(پ، "SELECT pages, title, price, note FROM books WHERE id = 2")
    _ := اس کیو لایت.بعدی(ن)
    سرچاپ اس کیو لایت.نوع ستون(ن، ۰)، اس کیو لایت.نوع ستون(ن، ۱)، اس کیو لایت.نوع ستون(ن، ۲)، اس کیو لایت.نوع ستون(ن، ۳)
    _ := اس کیو لایت.پایان(ن)

    سرچاپ اس کیو لایت.پرسمان عدد(پ، "SELECT SUM(pages) FROM books")، اس کیو لایت.پرسمان متن(پ، "SELECT title FROM books ORDER BY price DESC LIMIT 1")

    _ := اس کیو لایت.شروع تراکنش(پ)
    _ := اس کیو لایت.اجرا(پ، "DELETE FROM books")
    _ := اس کیو لایت.بازگردانی(پ)
    _ := اس کیو لایت.شروع تراکنش(پ)
    _ := اس کیو لایت.اجرا(پ، "UPDATE books SET price = price * 2")
    _ := اس کیو لایت.ثبت تراکنش(پ)
    سرچاپ اس کیو لایت.پرسمان عدد(پ، "SELECT COUNT(*) FROM books")، اس کیو لایت.پرسمان متن(پ، "SELECT price FROM books WHERE id = 1")

    سرچاپ اس کیو لایت.اجرا(پ، "SELECT * FROM missing") != ۰
    سرچاپ اس کیو لایت.خطا(پ)
    _ := اس کیو لایت.بستن(پ)
پایان
خروجیtrue true true 1 1 true 3 5 title 1 شازده کوچولو 96 4.5 - 2 بوف کور 120 6.25 - 3 سووشون 304 9 کلاسیک 1 3 2 5 520 سووشون 3 9.0 true no such table: missing

معتبر Ok

روال معتبر(): منطقی
سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اجرا Exec

روال اجرا(sql: رشته): صحیح
دستوری را اجرا می‌کند؛ صفر یعنی موفق.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

پرسمان Query

روال پرسمان(sql: رشته): dyn db.ردیف ها
پرسمانی را اجرا می‌کند و ردیف‌ها را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

ثبت تراکنش Commit

روال ثبت تراکنش(): صحیح
تراکنش را ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بازگردانی Rollback

روال بازگردانی(): صحیح
تراکنش را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

روال‌ها

اتصال Conn

روال اتصال(d: پایگاه داده): dyn db.Connection
پایگاه داده را به شکل اتصال مشترک برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

در دسترس Available

روال در دسترس(): منطقی
کتابخانه‌ی SQLite در دسترس است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

نسخه Version

روال نسخه(): رشته
نسخه‌ی SQLite.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بازکردن Open

روال بازکردن(path: رشته): پایگاه داده
پرونده‌ی پایگاه داده را باز می‌کند و اگر نباشد می‌سازد؛ :memory: یعنی پایگاه داده‌ی موقت در حافظه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

معتبر Ok

روال معتبر(db: پایگاه داده): منطقی
باز شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بستن Close

روال بستن(db: پایگاه داده): صحیح
می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اجرا Exec

روال اجرا(db: پایگاه داده، sql: رشته): صحیح
یک یا چند دستور را اجرا می‌کند؛ صفر یعنی موفق.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

خطا Error

روال خطا(db: پایگاه داده): رشته
آخرین پیام خطا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

شناسه آخرین درج LastInsertId

روال شناسه آخرین درج(db: پایگاه داده): صحیح۶۴
شناسه‌ی آخرین ردیف درج‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

تعداد تغییرات Changes

روال تعداد تغییرات(db: پایگاه داده): صحیح
شمار ردیف‌هایی که آخرین دستور تغییر داد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

مجموع تغییرات TotalChanges

روال مجموع تغییرات(db: پایگاه داده): صحیح
شمار همه‌ی ردیف‌های تغییرکرده از زمان باز شدن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

شروع تراکنش Begin

روال شروع تراکنش(db: پایگاه داده): صحیح
تراکنشی آغاز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

ثبت تراکنش Commit

روال ثبت تراکنش(db: پایگاه داده): صحیح
تراکنش را ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بازگردانی Rollback

روال بازگردانی(db: پایگاه داده): صحیح
تراکنش را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

آماده سازی Prepare

روال آماده سازی(db: پایگاه داده، sql: رشته): ردیف ها
دستوری با جای پارامتر ? آماده می‌کند؛ مقدارها را با روال‌های اتصال ... بدهید. امن‌ترین راه برای مقدارهای کاربر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

پرسمان Query

روال پرسمان(db: پایگاه داده، sql: رشته): ردیف ها
پرسمانی را اجرا می‌کند؛ ردیف‌ها را با بعدی بخوانید و در پایان پایان را صدا بزنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

دستور معتبر StmtOk

روال دستور معتبر(rows: ردیف ها): منطقی
دستور آماده شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بعدی Next

روال بعدی(rows: ردیف ها): منطقی
دستور را یک گام اجرا می‌کند؛ اگر ردیفی آماده است، درست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

بازنشانی Reset

روال بازنشانی(rows: ردیف ها): صحیح
دستور را برای اجرای دوباره با مقدارهای تازه آماده می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

پایان Finish

روال پایان(rows: ردیف ها): صحیح
دستور را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اتصال متن BindText

روال اتصال متن(rows: ردیف ها، idx: صحیح، val: رشته): صحیح
متن را به پارامتر شماره‌ی n می‌دهد؛ شماره از ۱.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اتصال عدد BindInt

روال اتصال عدد(rows: ردیف ها، idx: صحیح، val: صحیح۶۴): صحیح
عدد را به پارامتر می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اتصال اعشار BindFloat

روال اتصال اعشار(rows: ردیف ها، idx: صحیح، val: اعشار۶۴): صحیح
اعشاری را به پارامتر می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

اتصال خالی BindNull

روال اتصال خالی(rows: ردیف ها، idx: صحیح): صحیح
تهی را به پارامتر می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

تعداد ستون ColumnCount

روال تعداد ستون(rows: ردیف ها): صحیح
شمار ستون‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

متن Text

روال متن(rows: ردیف ها، col: صحیح): رشته
مقدار ستون به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

نام ستون ColumnName

روال نام ستون(rows: ردیف ها، col: صحیح): رشته
نام ستون.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

عدد صحیح Int

روال عدد صحیح(rows: ردیف ها، col: صحیح): صحیح
مقدار ستون به شکل عدد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

عدد صحیح۶۴ Int64

روال عدد صحیح۶۴(rows: ردیف ها، col: صحیح): صحیح۶۴
مقدار ستون ۶۴ بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

عدد اعشار Float

روال عدد اعشار(rows: ردیف ها، col: صحیح): اعشار۶۴
مقدار ستون اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

نوع ستون ColumnType

روال نوع ستون(rows: ردیف ها، col: صحیح): صحیح
کد گونه‌ی خود SQLite برای ستون: ۱ صحیح، ۲ اعشاری، ۳ متن، ۴ دودویی و ۵ تهی. متد نوع ستون ردیف‌ها به‌جای آن ثابت‌های مشترک را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

خالی است IsNull

روال خالی است(rows: ردیف ها، col: صحیح): منطقی
مقدار ستون تهی است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

پرسمان عدد QueryInt

روال پرسمان عدد(db: پایگاه داده، sql: رشته): صحیح
نخستین ستون نخستین ردیف به شکل عدد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam

پرسمان متن QueryText

روال پرسمان متن(db: پایگاه داده، sql: رشته): رشته
نخستین ستون نخستین ردیف به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: db-sqlite-Basics.salam