koleksi ilmu hikmah, kisahsufi,tasawuf,fengshui,maulid,desain grafis,batu akik,batu obsidian, paypal pay,za,pendanaan,RENTAL MOBIL proyek,investor,funder,kredit kpr,pinjaman multi guna ,pialang,wali amanat,SEWA MOBIL CIREBONtaxi online cirebondan lain-lain
koleksi ilmu-ilmu hikmah,kisah 2 tokoh sufi.teknologi tips n trik dll
Selasa, Mei 21, 2013
SQLite Tutorial tiga - Query Update dan Binding
Tutorial ini adalah yang ketiga dalam seri pemrograman SQLite di C. Jika Anda menemukan tutorial pertama ini, silakan kunjungi Pertama tutorial Pemrograman SQLite di C.
Baru ke database? Baca Apa adalah sebuah database relasional?
Dalam tutorial sebelumnya saya menjelaskan bagaimana untuk membuat tabel dalam database SQLite, cara memasukkan data dan kemudian dalam program cara mengekstrak data menggunakan SQL Pilih pernyataan.
Dalam tutorial ini, saya akan melihat memasukkan data menggunakan pernyataan insert dan bagaimana untuk mengikat kolom.
Masukkan pernyataan
Dalam tutorial sebelumnya, saya membuat lima pernyataan insert untuk mengisi tabel tempat. Umumnya ketika menulis aplikasi SQL ada empat instruksi SQL yang berbeda Anda perlu menggunakan:
Pilih - Data Pengembalian dari satu atau lebih tabel.
Sisipkan - Masukkan data ke dalam tabel.
Update - Memodifikasi dfata yang ada dalam sebuah tabel.
Hapus - menghapus data yang ada dari suatu tabel.
Insert mengasumsikan bahwa tabel sudah ada. Sebuah baris insert menyisipkan pernyataan baris data ke tabel yang ditentukan. Biasanya Anda harus memasukkan nilai untuk setiap kolom tetapi beberapa kolom mungkin memiliki sifat seperti nilai default, dan jika kolom yang tidak ditentukan dalam Insert sql nilai default digunakan.
Ingat bahwa tidak seperti dengan spreadsheet, setiap kolom dalam setiap baris dalam tabel dalam database relasional harus memiliki nilai, tidak ada kekosongan diperbolehkan, meskipun nilai NULL mungkin.
Sekarang mari kita menyisipkan baris ke dalam peristiwa tabel. Ini adalah tabel yang sama yang telah dibuat dalam tutorial sebelumnya. Berikut adalah menciptakan sql dan indeks menciptakan.
MENCIPTAKAN peristiwa TABLE (
idevent int,
tanggal int,
idvenue int,
ideventtype int,
Teks description);
CREATE INDEX ievent pada peristiwa (tanggal, idevent, ideventtype, idvenue);
Untuk pernyataan insert sederhana kita perlu nilai untuk kolom ini: idevent, tanggal, idvenue, ideventtype dan deskripsi. Pernyataan insert dasar terlihat seperti ini:
memasukkan ke dalam tabel (nama kolom) nilai (...)
Nama kolom tercantum dalam kurung dan nilai-nilai serta dengan 1-1 korespondensi. Harus ada jumlah kolom yang sama karena ada nilai-nilai.
Untuk peristiwa tabel kita membutuhkan kolom yang ditentukan, sehingga terlihat seperti ini
masukkan ke dalam peristiwa (idevent, tanggal, idvenue, ideventtype, deskripsi) nilai (?,?,?,?,?)
Mengapa pertanyaan bukannya menandai nilai-nilai yang tepat. Yah aku hanya bisa menulis kode untuk menggantikan nilai-nilai langsung ke string sql. Dalam hal bahwa setiap kolom teks, seperti deskripsi harus dikelilingi dengan tanda kutip, tapi itu umumnya lebih baik untuk mengikat kolom menggunakan fungsi untuk masing-masing kolom. Ada beberapa jenis sqlite3_bind ... fungsi yang tersedia yang kita butuhkan untuk ini seperti
sqlite3_bind_int - untuk int kolom
sqlite3_bind_text-untuk kolom teks
sqlite3_bind_double - untuk kolom mengambang
Ada orang lain tetapi ini adalah yang utama kita akan menggunakan. Gagasan ini adalah bahwa untuk setiap? dalam string sql, kita sebut fungsi sqlite3_bind tepat. Ini dihitung dari 1 (bukan 0) dan nilai-2 dalam panggilan fungsi mengikat adalah indeks ini. Engkau harus menjadi salah satu panggilan mengikat per tanda tanya.
sqlite3_bind_int (stmt, 1, maxid); / * paling baik dilakukan oleh autoincreement * /
sqlite3_bind_int (stmt, 2, 41456); / * tanggal * /
sqlite3_bind_int (stmt, 3, 4); / * idvenue 4 = Echo * /
sqlite3_bind_int (stmt, 4, 1); / * ideventtype - disco * /
sqlite3_bind_text (stmt, 5, deskripsi, strlen (deskripsi), SQLITE_STATIC);
Autoincrement
Ada indeks pada kolom idevent pertama tapi mungkin lebih baik memiliki kolom yang telah dibuat dengan pernyataan sql ini sebagai gantinya:
membuat acara tabel (
...
idevent int PRIMARY KEY,
...
Ini akan membuat idevent autoincrementing dan itu bisa telah ditinggalkan keluar dari insert pernyataan sql. Sebaliknya, kode panggilan getmaxidevent function () yang menjalankan query sql untuk mengembalikan idevent tertinggi dan tambahkan 1 untuk itu. Catatan, ini memiliki itu variabel lstmt sendiri sehingga tidak akan mengganggu stmt utama.
Setelah memasukkan sql dijalankan memanggil getmaxidevent () lagi menegaskan bahwa baris tambahan telah ditambahkan ke meja dan berjalan * pilih dari peristiwa menunjukkan hal itu.
Waspadalah terhadap Gotcha Teks
Pernyataan mengikat 5th untuk teks (sqlite3_bind_text) lewat di panjang teks, dan ini tidak adalah 1 dan tidak termasuk nol terminator. The SQLITE_STATIC konstan mengatakan itu tidak untuk membebaskan string teks setelah panggilan. Lihat Bind dokumentasi SQLite untuk lebih jelasnya.
Ambil contoh kode.
Dalam tutorial berikutnya saya akan melihat sedikit lebih di "insert pilih" pernyataan dan memperbarui sql.
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar
stroom09@gmail.com