Các ví dụ về Golang SQLite

Cac Vi Du Ve Golang Sqlite



Golang là một ngôn ngữ lập trình mã nguồn mở. Nó hỗ trợ các loại công cụ cơ sở dữ liệu khác nhau. SQLite là một công cụ cơ sở dữ liệu quan hệ phổ biến và Golang có gói cơ sở dữ liệu/SQL có thể được sử dụng để kết nối với cơ sở dữ liệu SQLite và thực hiện các loại tác vụ cơ sở dữ liệu khác nhau. Cách kết nối với cơ sở dữ liệu SQLite và thực hiện các loại hoạt động cơ sở dữ liệu khác nhau như tạo bảng, chèn bản ghi vào bảng, đọc dữ liệu từ bảng, cập nhật dữ liệu của bảng và xóa bản ghi khỏi bảng được hiển thị trong hướng dẫn này bằng cách sử dụng tập lệnh Golang.

điều kiện tiên quyết:

Bạn phải hoàn thành các nhiệm vụ sau trước khi thực hành các ví dụ trong hướng dẫn này:

A. Cài đặt ngôn ngữ Golang trong hệ thống nếu nó chưa được cài đặt trước đó. Chạy lệnh sau để kiểm tra phiên bản Golang đã cài đặt:







phiên bản $ đi



B. Cài đặt sqlite3 trong hệ thống nếu nó chưa được cài đặt trước đó. Sqlite3 được cài đặt mặc định trên Ubuntu 20+. Chạy lệnh sau để kiểm tra phiên bản đã cài đặt của sqlite3:



$ sqlite3 --version





C. Chạy các lệnh sau để tạo thư mục có tên “golang-sqlite” và chuyển đến thư mục đó nơi tệp cơ sở dữ liệu SQLite và tệp Golang sẽ được lưu trữ:

$ mkdir golang-sqlite
$ cd golang-sqlite

D. Chạy lệnh sau để tải xuống gói Golang cần thiết để sử dụng SQLite với Golang:



$ đi lấy github.com/mattn/go-sqlite3

Thao tác cơ sở dữ liệu bằng Golang và SQLite

Các thao tác cơ sở dữ liệu cơ bản sử dụng cơ sở dữ liệu SQLite và tập lệnh Golang được trình bày trong hướng dẫn này. Danh sách các tác vụ cơ sở dữ liệu được đề cập trong hướng dẫn này được đề cập như sau:

  1. Tạo cơ sở dữ liệu SQLite
  2. Tạo kết nối cơ sở dữ liệu SQLite
  3. Tạo một bảng mới
  4. Chèn dữ liệu vào bảng
  5. Đọc dữ liệu từ bảng
  6. Cập nhật dữ liệu của bảng
  7. Xóa dữ liệu khỏi bảng

Tạo cơ sở dữ liệu SQLite bằng Golang

Tạo tệp Golang bằng tập lệnh sau để tạo tệp cơ sở dữ liệu SQLite mới có tên là “test.db”. Bốn mô-đun được nhập vào tập lệnh. Mô-đun “fmt” được sử dụng để in đầu ra trong thiết bị đầu cuối. Mô-đun “log” được sử dụng để hủy bỏ chương trình khi có bất kỳ lỗi nào xuất hiện. Mô-đun “os” được sử dụng để tạo cơ sở dữ liệu SQLite và xử lý lỗi. Mô-đun “go-sqlite3” được sử dụng để tạo kết nối với cơ sở dữ liệu SQLite thông qua Golang. Phương thức Create() của mô-đun “os” được sử dụng ở đây để tạo cơ sở dữ liệu SQLite. Nếu cơ sở dữ liệu được tạo thành công, thông báo thành công sẽ được in trong thiết bị đầu cuối. Nếu không, chương trình sẽ bị chấm dứt. Phương thức Close() được gọi để đóng kết nối cơ sở dữ liệu.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'Bạn'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := Bạn . Tạo nên ( 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( msgstr 'Cơ sở dữ liệu được tạo.' )
}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “db_connect.go”:

$ hãy chạy db_connect.go

Chạy lệnh “ls” để kiểm tra xem tệp cơ sở dữ liệu “test.db” đã được tạo hay chưa:

$ ls

Đầu ra sau đây cho thấy thông báo thành công, 'Cơ sở dữ liệu đã được tạo', được in ở đầu ra và tệp 'test.db' được tạo ở vị trí hiện tại:

Kết nối với cơ sở dữ liệu SQLite bằng Golang

Tạo tệp Golang bằng tập lệnh sau để mở tệp cơ sở dữ liệu “test.db” và tạo kết nối với cơ sở dữ liệu. Mô-đun cơ sở dữ liệu/SQL của Golang được nhập vào đây để thực hiện tác vụ này. Phương thức open() được sử dụng ở đây để tạo kết nối với cơ sở dữ liệu SQLite hiện có. Nếu cơ sở dữ liệu được kết nối thành công, thông báo thành công sẽ được in trong thiết bị đầu cuối. Nếu không, chương trình sẽ bị chấm dứt.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( 'Cơ sở dữ liệu được kết nối thành công.' )
}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “db_connect2.go”:

$ hãy chạy db_connect2.go

Đầu ra sau đây cho thấy rằng tệp cơ sở dữ liệu “test.db” đã được mở và kết nối thành công. Thông báo thành công, 'Cơ sở dữ liệu được kết nối thành công', được in ở đầu ra:

Tạo bảng trong cơ sở dữ liệu SQLite bằng Golang

Tạo tệp Golang bằng tập lệnh sau để tạo bảng cơ sở dữ liệu có tên “thành viên” bên trong tệp cơ sở dữ liệu “test.db”. Phương thức Exec() được sử dụng ở đây để thực thi truy vấn CREATE TABLE để tạo bảng “thành viên” với sáu trường và một khóa chính. Nếu bảng được tạo thành công trong cơ sở dữ liệu, một thông báo thành công sẽ được in ra. Nếu không, chương trình sẽ bị chấm dứt.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu sqlite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
hằng số truy vấn sợi dây = `
TẠO BẢNG NẾU KHÔNG TỒN TẠI thành viên (
id INTEGER NOT NULL PRIMARY KEY,
tên CHAR(40) KHÔNG NULL,
mtype CHAR(100) NOT NULL,
thư điện tử CHAR(50),
địa chỉ TEXT NOT NULL,
CHAR di động (25) NOT NULL);`

_ , sai lầm := db . điều hành ( truy vấn );

nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( 'Bảng được tạo thành công.' )
}

}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “create_table.go”:

$ đi chạy create_table.go

Đầu ra sau đây cho thấy bảng được tạo thành công trong cơ sở dữ liệu. Thông báo thành công, 'Bảng được tạo thành công', được in trong thiết bị đầu cuối:

Bạn có thể đăng nhập vào SQLite để kiểm tra xem bảng đã được tạo hay chưa trong cơ sở dữ liệu.

Chạy lệnh sau để chạy SQLite với cơ sở dữ liệu “test.db”:

$ sqlite3 kiểm tra.db

Chạy lệnh SQLite “.tables” từ dấu nhắc lệnh SQLite để kiểm tra tên bảng của cơ sở dữ liệu:

sqlite3 > .tables

Đầu ra sau đây cho thấy cơ sở dữ liệu chứa bảng “thành viên” được tạo bằng cách thực thi tập lệnh Golang:

Chèn các bản ghi vào bảng SQLite bằng Golang

Nhiều bản ghi có thể được chèn vào bảng bằng cách thực hiện truy vấn INSERT nhiều lần hoặc bằng cách thêm nhiều giá trị trong một truy vấn INSERT. Tạo tệp Golang bằng tập lệnh sau để chèn ba bản ghi vào bảng “thành viên” của tệp cơ sở dữ liệu “test.db” bằng một truy vấn INSERT. Phương thức Exec() được sử dụng ở đây để thực hiện truy vấn INSERT. Nếu các bản ghi được chèn thành công vào bảng, một thông báo thành công sẽ được in ra. Nếu không, chương trình sẽ bị chấm dứt.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
hằng số truy vấn sợi dây = `
CHÈN VÀO thành viên (id, name, mtype, email, address, mobile)
GIÁ TRỊ(1, 'Nehal Ahmed', 'Silver', 'nehal@gmail.com','36, Dhanmondi 2, Dhaka','01844657342'),
(2, 'Abir Chowdhury', 'Gold', 'abir@gmail.com','102, Mirpur 10, Dhaka','01994563423'),
(3, 'Mirza Abbas', 'Silver', 'abbas@gmail.com','12, Jigatala, Dhaka','01640006710');`


//Thực hiện câu truy vấn
_ , sai lầm := db . điều hành ( truy vấn );

nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( 'Bản ghi được chèn thành công.' )
}
}

//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “insert_table.go”:

$ đi chạy insert_table.go

Đầu ra sau đây cho thấy các bản ghi được chèn thành công vào bảng. Thông báo thành công, “Records insert Successfully”, được in ở đầu ra:

Bạn có thể đăng nhập vào SQLite để kiểm tra xem ba bản ghi đã được chèn thành công hay chưa vào bảng “thành viên”.

Chạy lệnh sau để chạy SQLite với cơ sở dữ liệu “test.db”:

$ sqlite3 kiểm tra.db

Chạy truy vấn CHỌN sau để đọc tất cả nội dung của bảng 'thành viên':

sqlite3 > CHỌN * TỪ thành viên ;

Đầu ra sau đây cho thấy bảng 'thành viên' chứa ba bản ghi được chèn bởi tập lệnh Golang:

Đọc dữ liệu của bảng SQLite bằng Golang

Tạo một tệp Golang với tập lệnh sau để đọc các bản ghi của bảng 'thành viên'. Bạn phải xác định các biến trong Golang để lưu trữ các giá trị được trả về từ truy vấn CHỌN. Trong tập lệnh này, năm trường được truy xuất từ ​​bảng 'thành viên' bằng cách sử dụng truy vấn CHỌN. Vì vậy, năm biến được xác định trong tập lệnh để lưu trữ các giá trị của năm trường của bảng “thành viên” trong đó giá trị của trường “mtype” là “Silver”. Phương thức Query() được sử dụng ở đây để thực hiện truy vấn SELECT. Tiếp theo, vòng lặp “for” được sử dụng để đọc tập kết quả được trả về bởi truy vấn SELECT. Hàm printf() được sử dụng để in các giá trị được định dạng của tập kết quả.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )

// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {

//Khai báo các biến để lưu giá trị dòng
đã từng là nhận dạng int
đã từng là tên sợi dây
đã từng là mtype sợi dây
đã từng là Địa chỉ sợi dây
đã từng là di động sợi dây
hằng số truy vấn sợi dây = `CHỌN id, tên, mtype, địa chỉ, điện thoại di động
TỪ thành viên
WHERE mtype = 'Bạc';`


//Thực hiện câu truy vấn
hàng , sai lầm := db . Truy vấn ( truy vấn );

nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {

//In thông báo thành công
fmt . Println ( 'Hồ sơ của tất cả các thành viên bạc:' )
fmt . Println ( 'NHẬN DẠNG \t Tên \t \t Loại thành viên \t Địa chỉ \t \t Liên hệ với No' )
hàng . Kế tiếp () {
hàng . Quét ( &nhận dạng , &tên , &mtype , &Địa chỉ , &di động )
fmt . inf ( '%d \t %S \t %S \t %S \t %S \N ' , nhận dạng , tên , mtype , Địa chỉ , di động )
}
}
}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “select_table.go”:

$ đi chạy select_table.go

Hai bản ghi tồn tại trong bảng 'thành viên' có chứa 'Silver' trong trường 'mtype'. Đầu ra sau đây hiển thị hai bản ghi của bảng “thành viên” được trả về bởi truy vấn CHỌN:

Cập nhật dữ liệu của bảng SQLite bằng Golang

Tạo một tệp Golang với tập lệnh sau thay đổi giá trị của trường di động của bảng “thành viên” có chứa giá trị id là 2. Phương thức Exec() được sử dụng tại đây để thực hiện truy vấn CẬP NHẬT. Nếu bản ghi được cập nhật thành công trong bảng, một thông báo thành công sẽ được in ra. Nếu không, chương trình sẽ bị chấm dứt.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
hằng số truy vấn sợi dây = `
CẬP NHẬT thành viên SET mobile = '018563452390' WHERE id = 2;`

_ , sai lầm := db . điều hành ( truy vấn );

nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( 'Bản ghi được cập nhật thành công.' )
}
}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “update_table.go”:

$ hãy chạy update_table.go

Trong bảng 'thành viên', hàng thứ hai chứa giá trị id là 2. Đầu ra sau đây cho biết bản ghi của bảng được cập nhật thành công. Thông báo thành công, 'Bản ghi được cập nhật thành công', được in trong thiết bị đầu cuối:

Bạn có thể đăng nhập vào SQLite để kiểm tra xem có bất kỳ bản ghi nào của bảng thành viên được cập nhật hay không.

Chạy lệnh sau để chạy SQLite với cơ sở dữ liệu “test.db”:

$ sqlite3 kiểm tra.db

Chạy truy vấn CHỌN sau để đọc tất cả nội dung của bảng 'thành viên':

sqlite3 > CHỌN * TỪ thành viên ;

Giá trị của trường di động của 2 thứ bản ghi của bảng thành viên là “01994563423” trước khi thực thi tập lệnh. Đầu ra sau đây cho thấy giá trị của trường di động của 2 thứ bản ghi của bảng thành viên được đổi thành “018563452390” sau khi thực thi tập lệnh:

Xóa dữ liệu của bảng SQLite bằng Golang

Tạo tệp Golang bằng tập lệnh sau để xóa 3 thứ bản ghi của bảng “thành viên” có chứa giá trị id là 3. Phương thức Exec() được sử dụng ở đây để thực hiện truy vấn DELETE. Nếu bản ghi được xóa thành công khỏi bảng, một thông báo thành công sẽ được in ra. Nếu không, chương trình sẽ bị chấm dứt.

bưu kiện chủ yếu

//Nhập các mô-đun cần thiết
nhập khẩu (
'fmt'
'nhật ký'
'cơ sở dữ liệu/sql'
_ 'github.com/mattn/go-sqlite3'
)

chức năng chủ yếu () {

//Tạo cơ sở dữ liệu SQLite mới
db , sai lầm := sql . Mở ( 'sqlite3' , 'thử nghiệm.db' )
// Kiểm tra xem có lỗi nào không
nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//Xác định truy vấn xóa
hằng số truy vấn sợi dây = `XÓA KHỎI các thành viên WHERE id = 3;`
//Thực hiện câu truy vấn
_ , sai lầm := db . điều hành ( truy vấn );

nếu như sai lầm != không {
//Thêm thông báo lỗi vào nhật ký
đăng nhập . Gây tử vong ( sai lầm )
} khác {
//In thông báo thành công
fmt . Println ( 'Bản ghi đã được xóa thành công.' )
}
}
//Đóng kết nối cơ sở dữ liệu
db . Đóng ()
}

Chạy lệnh sau để thực thi tệp “delete_table.go”:

$ đi chạy delete_table.go

Đầu ra sau đây cho thấy rằng 3 thứ bản ghi của bảng 'thành viên' đã được xóa thành công. Thông báo thành công, 'Bản ghi đã bị xóa thành công', được in trong thiết bị đầu cuối:

Bạn có thể đăng nhập vào SQLite để kiểm tra xem có bản ghi nào của bảng thành viên bị xóa hay không.

Chạy lệnh sau để chạy SQLite với cơ sở dữ liệu “test.db”:

$ sqlite3 kiểm tra.db

Chạy truy vấn CHỌN sau để đọc tất cả nội dung của bảng 'thành viên':

sqlite3 > CHỌN * TỪ thành viên ;

Đầu ra sau đây cho thấy giá trị của 3 thứ bản ghi của bảng thành viên bị xóa sau khi thực thi tập lệnh và hai bản ghi khác được in ở đầu ra:

Phần kết luận

Cả SQLite và Golang đều phổ biến hiện nay vì các tính năng đơn giản và gọn nhẹ của chúng. Bất kỳ ứng dụng dựa trên cơ sở dữ liệu đơn giản nào cũng có thể được triển khai dễ dàng bằng các công cụ này. Phần chính của bất kỳ ứng dụng nào là thực hiện thao tác CRUD. Các phương pháp triển khai thao tác CRUD bằng tập lệnh Golang và cơ sở dữ liệu SQLite được giải thích trong hướng dẫn này bằng cách sử dụng nhiều tệp Golang. Nếu bạn là người mới học ngôn ngữ Go và cơ sở dữ liệu SQLite, hướng dẫn này sẽ giúp bạn học những điều này từ cơ bản.