Lua - Akses Database
Hai, para pemrogram yang sedang berkembang! Hari ini, kita akan memulai perjalanan yang menarik ke dunia akses database menggunakan Lua. Sebagai guru ilmu komputer tetangga yang ramah, saya di sini untuk mengarahkan Anda dalam petualangan ini langkah demi langkah. Jangan khawatir jika Anda baru dalam pemrograman - kita akan mulai dari dasar dan kemudian maju. Jadi, siapkan hardhat virtual Anda, dan mari kita menggali beberapa data!
Pengaturan Database MySQL
Sebelum kita dapat mulai bermain dengan database di Lua, kita perlu menyiapkan tempat bermain kita. Bayangkan ini seperti menyiapkan dapur sebelum memasak makanan lezat. Dalam kasus kita, kita akan menggunakan MySQL sebagai sistem manajemen database.
-
Pertama, pastikan Anda telah menginstal MySQL di komputer Anda. Jika belum, buka situs MySQL dan unduh versi yang sesuai dengan sistem operasi Anda.
-
Setelah terinstal, buat database baru untuk eksperimen kita. Anda dapat melakukan ini menggunakan baris perintah MySQL atau alat grafis seperti MySQL Workbench.
CREATE DATABASE lua_test;
Bagus! Sekarang kita memiliki sandaran yang siap untuk some Lua magic.
Mengimpor MySQL
Untuk menggunakan MySQL dengan Lua, kita memerlukan alat khusus yang disebut LuaSQL. Itu seperti seorang penerjemah yang membantu Lua berbicara kepada MySQL. mari kita mengimpor itu:
local luasql = require "luasql.mysql"
Baris ini seperti mengatakan ke Lua, "Hai, kita akan memerlukan keterampilan MySQL Anda untuk tugas ini!"
Menyiapkan Koneksi
Sekarang kita telah memperkenalkan Lua ke MySQL, mari kita membentuk koneksi. Itu seperti mendial nomor telepon untuk mencapai database kita:
local env = luasql.mysql()
local con = env:connect("lua_test", "username", "password", "localhost", 3306)
Ini adalah apa yang terjadi:
- Kita membuat lingkungan (
env
) untuk MySQL. - Kita menggunakan lingkungan ini untuk terhubung ke database kita, menyediakan nama database, nama pengguna, kata sandi, host, dan port.
Fungsi Eksekusi
Fungsi eksekusi adalah cara kita mengirim perintah ke database. Itu seperti pelayan mengambil pesanan kita di restoran:
function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end
Fungsi ini mengambil koneksi kita dan perintah SQL, mengeksekusinya, dan mengembalikan hasil.
Contoh Membuat Tabel
Mari kita buat tabel pertama kita! Bayangkan kita membangun sistem pustaka sederhana:
local sql = [[
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
year INT
)
]]
execute(con, sql)
Ini membuat tabel 'books' dengan kolom id, title, author, dan year.
Contoh Pernyataan Insert
Sekarang, mari kita tambahkan beberapa buku ke pustaka kita:
local sql = [[
INSERT INTO books (title, author, year)
VALUES ('The Lua Programming Language', 'Roberto Ierusalimschy', 2016)
]]
execute(con, sql)
Ini menambahkan buku ke tabel kita. Itu seperti mengisi kartu pustaka untuk buku baru.
Contoh Pernyataan Update
Ouch! Kita membuat kesalahan. Mari kita memperbarui tahun buku kita:
local sql = [[
UPDATE books
SET year = 2017
WHERE title = 'The Lua Programming Language'
]]
execute(con, sql)
Ini memperbaiki tahun terbit buku kita.
Contoh Pernyataan Delete
Mari kita hapus buku dari pustaka kita:
local sql = [[
DELETE FROM books
WHERE title = 'The Lua Programming Language'
]]
execute(con, sql)
Ini menghapus buku yang ditentukan dari tabel kita.
Contoh Pernyataan Select
Sekarang, mari kita lihat apa saja buku yang ada di pustaka kita:
local sql = "SELECT * FROM books"
local cur = con:execute(sql)
local row = cur:fetch({}, "a")
while row do
print(string.format("%s by %s (%d)", row.title, row.author, row.year))
row = cur:fetch(row, "a")
end
Ini mengambil semua buku dan mencetak detailnya.
Contoh Lengkap
Mari kita gabungkan semua dalam contoh lengkap:
local luasql = require "luasql.mysql"
local env = luasql.mysql()
local con = env:connect("lua_test", "username", "password", "localhost", 3306)
function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end
-- Buat tabel
execute(con, [[
CREATE TABLE IF NOT EXISTS books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
year INT
)
]])
-- Masukkan buku
execute(con, [[
INSERT INTO books (title, author, year)
VALUES ('The Lua Programming Language', 'Roberto Ierusalimschy', 2017)
]])
-- Pilih dan cetak semua buku
local cur = con:execute("SELECT * FROM books")
local row = cur:fetch({}, "a")
while row do
print(string.format("%s by %s (%d)", row.title, row.author, row.year))
row = cur:fetch(row, "a")
end
con:close()
env:close()
Skrip ini membuat tabel, memasukkan buku, dan kemudian mencetak semua buku di tabel.
Melakukan Transaksi
Transaksi seperti gelembung perlindungan di sekitar rangkaian operasi database. Mereka memastikan bahwa baik semua operasi sukses, atau none dari mereka melakukan. Itu seperti pendekatan "semua atau tidak ada."
Memulai Transaksi
Untuk memulai transaksi:
con:execute("START TRANSACTION")
Membatalkan Transaksi
Jika ada yang salah, kita dapat membatalkan semua perubahan:
con:execute("ROLLBACK")
Menyimpan Transaksi
Jika semua berjalan lancar, kita dapat menyimpan semua perubahan:
con:execute("COMMIT")
Mengimpor SQLite
SQLite adalah sistem database populer lainnya, khususnya untuk aplikasi yang lebih kecil. Mari kita lihat bagaimana menggunakannya dengan Lua:
local luasql = require "luasql.sqlite3"
Menyiapkan Koneksi
Menyambungkan ke SQLite sedikit berbeda dari MySQL:
local env = luasql.sqlite3()
local con = env:connect("test.db")
Ini membuat atau membuka file "test.db" sebagai database kita.
Fungsi Eksekusi
Fungsi eksekusi untuk SQLite mirip dengan MySQL:
function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end
Contoh Membuat Tabel
Mari kita buat tabel sederhana di SQLite:
local sql = [[
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)
]]
execute(con, sql)
Contoh Pernyataan Insert
Sekarang, mari kita tambahkan pengguna:
local sql = [[
INSERT INTO users (name, age)
VALUES ('Alice', 30)
]]
execute(con, sql)
Contoh Pernyataan Select
Mari kita dapatkan pengguna:
local sql = "SELECT * FROM users"
local cur = con:execute(sql)
local row = cur:fetch({}, "a")
while row do
print(string.format("%s is %d years old", row.name, row.age))
row = cur:fetch(row, "a")
end
Contoh Lengkap
Ini adalah contoh lengkap menggunakan SQLite:
local luasql = require "luasql.sqlite3"
local env = luasql.sqlite3()
local con = env:connect("test.db")
function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end
-- Buat tabel
execute(con, [[
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)
]])
-- Masukkan pengguna
execute(con, [[
INSERT INTO users (name, age)
VALUES ('Alice', 30)
]])
-- Pilih dan cetak semua pengguna
local cur = con:execute("SELECT * FROM users")
local row = cur:fetch({}, "a")
while row do
print(string.format("%s is %d years old", row.name, row.age))
row = cur:fetch(row, "a")
end
con:close()
env:close()
Skrip ini membuat tabel, memasukkan pengguna, dan kemudian mencetak semua pengguna di tabel.
Dan begitu juga, teman-teman! Anda telah mengambil langkah pertama Anda ke dunia akses database dengan Lua. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba contoh ini. Siapa tahu? Anda mungkin saja menciptakan aplikasi database-driven besar berikutnya! Selamat coding!
Metode | Deskripsi |
---|---|
require "luasql.mysql" |
Mengimpor modul MySQL |
env:connect() |
Membentuk koneksi database |
con:execute() |
Mengeksekusi perintah SQL |
cur:fetch() |
Mengambil baris hasil |
START TRANSACTION |
Memulai transaksi |
ROLLBACK |
Membatalkan transaksi |
COMMIT |
Menyimpan transaksi |
require "luasql.sqlite3" |
Mengimpor modul SQLite |
Credits: Image by storyset