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!

Lua - Database Access

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.

  1. Pertama, pastikan Anda memiliki MySQL terinstal di komputer Anda. Jika belum, buka situs MySQL dan unduh versi yang sesuai untuk sistem operasi Anda.

  2. 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