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!

Lua - Database Access

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.

  1. Pertama, pastikan Anda telah menginstal MySQL di komputer Anda. Jika belum, buka situs MySQL dan unduh versi yang sesuai dengan 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 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