Lua - Akses Database
Halo, para pemrogram yang sedang berkembang! Hari ini, kita akan memulai sebuah perjalanan menarik ke dunia akses database menggunakan Lua. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk mengarahkan Anda melalui petualangan ini step by step. Jangan khawatir jika Anda baru dalam programming - kita akan mulai dari dasar dan kemudian maju. Jadi, siapkan topi kerja virtual Anda, dan mari kita menggali beberapa data!
Pengaturan Database MySQL
Sebelum kita dapat mulai bermain dengan database di Lua, kita perlu mengatur tempat bermain kita. Bayangkan ini seperti menyiapkan dapur Anda sebelum memasak makanan yang lezat. Dalam kasus kita, kita akan menggunakan MySQL sebagai sistem manajemen database kita.
-
Pertama, pastikan Anda memiliki MySQL terinstal di komputer Anda. Jika belum, buka situs MySQL dan unduh versi yang sesuai untuk 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 beberapa magi Lua.
Mengimpor MySQL
Untuk menggunakan MySQL dengan Lua, kita butuh alat khusus yang disebut LuaSQL. Itu seperti seorang penerjemah yang membantu Lua berbicara kepada MySQL. mari kita mengimpornya:
local luasql = require "luasql.mysql"
Baris ini seperti mengatakan ke Lua, "Hey, kita akan memerlukan keterampilan MySQLmu untuk tugas ini!"
Mengatur Koneksi
Sekarang kita telah memperkenalkan Lua ke MySQL, mari kita buat koneksi. Itu seperti menghubungi 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 menghubungkan 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 hasilnya.
Contoh Membuat Tabel
Mari kita buat tabel pertama kita! Bayangkan kita sedang membuat sistem perpustakaan 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 bernama 'books' dengan kolom id, title, author, dan year.
Contoh Perintah Insert
Sekarang, mari kita tambahkan beberapa buku ke perpustakaan 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 perpustakaan untuk buku baru.
Contoh Perintah Update
Ups! Kita membuat kesalahan. Mari kita perbarui 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 Perintah Delete
Mari kita hapus buku dari perpustakaan kita:
local sql = [[
DELETE FROM books
WHERE title = 'The Lua Programming Language'
]]
execute(con, sql)
Ini menghapus buku yang ditentukan dari tabel kita.
Contoh Perintah Select
Sekarang, mari kita lihat buku-buku yang ada di perpustakaan 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 detilnya.
Contoh Lengkap
Mari kita gabungkan semuanya 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, menambahkan buku, dan kemudian mencetak semua buku di tabel.
Melakukan Transaksi
Transaksi adalah seperti bongkar pelindung di sekitar rangkaian operasi database. Mereka memastikan bahwa baik semua operasi sukses, atau none dari mereka melakukan. Itu seperti pendekatan "semua atau tak 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 baik-baik saja, 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"
Mengatur Koneksi
Menghubungkan 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 Perintah Insert
Sekarang, mari kita tambahkan pengguna:
local sql = [[
INSERT INTO users (name, age)
VALUES ('Alice', 30)
]]
execute(con, sql)
Contoh Perintah Select
Mari kita mengambil 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, menambahkan pengguna, dan kemudian mencetak semua pengguna di tabel.
Dan itu saja, teman-teman! Anda telah mengambil langkah pertama Anda ke dunia akses database dengan Lua. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba eksperimen dengan contoh ini. Siapa tahu? Anda mungkin saja menciptakan aplikasi database-driven berikutnya yang besar! Selamat coding!
Metode | Deskripsi |
---|---|
require "luasql.mysql" |
Mengimpor modul MySQL |
env:connect() |
Membuat koneksi database |
con:execute() |
Menjalankan 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