Sử dụng SQLite trong iOS với Xamarin (Bài 5)

Sử dụng SQLite trong iOS với Xamarin sẽ trình bày phương pháp lưu trữ dữ liệu trên thiết bị iPhone. Như chúng ta đã biết, SQLite là một hệ quản trị cơ sở dữ liệu dành cho thiết bị di động. Ưu điểm của nó là nhanh, gọn. Cơ sở dữ liệu được tổ chức trong một file duy nhất.

Trong bài học SQLite trong iOS, chúng tôi đã trình bày những thao tác như tạo cơ sở dữ liệu, tạo bảng, thêm dữ liệu, xem dữ liệu, cập nhật dữ liệu và xóa dữ liệu bằng ngôn ngữ Swift. Các bạn có thể tham khảo để hiểu rõ hơn.

Còn trong bài học này, chúng ta tiếp cận những xử lý trên bằng ngôn ngữ lập trình C# sử dụng phần mềm Xamarin Studio.

Sử dụng SQLite trong iOS với Xamarin – Các bước chuẩn bị

Thêm System.Data và Mono.Data.Sqlite vào project bằng các thao tác sau

1/ Mở Xamarin Studio -> mở project đã tồn tại hoặc tạo mới project.

2/ Tại project đang mở, chuột phải References -> chọn Edit References…

sử dụng sqlite trong ios với xamarin

3/ Chọn Mono.Data.SqliteSystem.Data -> chọn OK để add vào project

Sử dụng SQLite trong iOS với Xamarin – Viết xử lý

1/ Tạo cơ sở dữ liệu

var doc = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var db = Path.Combine(doc, "Tên_cơ_sở_dữ_liệu.db");
SqliteConnection.CreateFile(db);

2/ Tạo bảng

var connStr = String.Format("Data Source={0};Version=3;", db);
using (var conn = new SqliteConnection(connStr))
{
  conn.Open();
  using (var cmd = conn.CreateCommand())
  {
    cmd.CommandText = "Câu lệnh tạo bảng";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
  }
  conn.Close();
}

3/ Thêm dữ liệu vào bảng

var doc = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var db = Path.Combine(doc, "Tên_cơ_sở_dữ_liệu.db");
 
//Kết nối cơ sở dữ liệu
var connStr = String.Format("Data Source={0};Version=3;", db);
using (var conn = new SqliteConnection(connStr))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
      cmd.CommandText = "Câu lệnh thêm dữ liệu";
      cmd.CommandType = CommandType.Text;
      cmd.ExecuteNonQuery();
    }
} 

4/ Xem dữ liệu

var doc = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var db = Path.Combine(doc, "Tên_cơ_sở_dữ_liệu.db");
 
//Kết nối cơ sở dữ liệu
var connStr = String.Format("Data Source={0};Version=3;", db);
using (var conn = new SqliteConnection(connStr))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
      cmd.CommandText = "Câu lệnh xem dữ liệu";
      cmd.CommandType = CommandType.Text;
      using (SqliteDataReader reader = cmd.ExecuteReader())
      {
         if (reader.Read())
         {
           //Đọc dữ liệu từ reader
         }
      } 
    }
}

Sử dụng SQLite trong iOS với Xamarin – Bài mẫu

Mô tả ứng dụng

Ứng dụng cho phép tạo tài khoản gồm tên và mật khẩu. Thông tin này sẽ được lưu vào bảng AccountTbl. Hình bên dưới là giao diện ứng dụng

Phân tích yêu cầu

Để thiết kế giao diện, chúng ta cần 1 label (Đăng ký tài khoản), 2 Text Field (Nhập  tên đăng nhập, Nhập mật khẩu), 2 Button (Quay về, Đăng ký).

Viết xử lý

1/ Tạo cơ sở dữ liệu tên accountdb và bảng tên AccountTbl tại phương thức ViewDidLoad()

//Tạo cơ sở dữ liệu tên accountdb
var doc = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var db = Path.Combine(doc, "accountdb.db");
SqliteConnection.CreateFile(db);

//Tạo bảng accounttbl
var connStr = String.Format("Data Source={0};Version=3;", db);
using (var conn = new SqliteConnection(connStr))
{
  conn.Open();
  using (var cmd = conn.CreateCommand())
  {
    cmd.CommandText = "CREATE TABLE AccountTbl (Name text PRIMARY KEY, Password text)";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
   }
   conn.Close();
}

2/ Tạo phương thức Save() để xử lý lưu thông tin tài khoản vào bảng (Trong đó txtNametxtPassword là name của 2 Text Field được đặt trong lúc thiết kế giao diện)

private void Save()
{
   //Tên đăng nhập
   String name = txtName.Text;
   //Mật khẩu đăng nhập
   String pass = txtPassword.Text;
 
   int row = 0;
 
   var doc = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
   var db = Path.Combine(doc, "accountdb.db");
 
   //Kết nối cơ sở dữ liệu
   var connStr = String.Format("Data Source={0};Version=3;", db);
   using (var conn = new SqliteConnection(connStr))
   {
      conn.Open();
      using (var cmd = conn.CreateCommand())
      {
        cmd.CommandText = "INSERT INTO AccountTbl VALUES(@name,@pass)";
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add("@name", DbType.String).Value = name;
        cmd.Parameters.Add("@pass", DbType.String).Value = pass;
        row = cmd.ExecuteNonQuery();
       }
     conn.Close();
   }
   if (row == 0)
   {
     //Không thể tạo được tài khoản này!
   }
   else
   {
     //Tạo tài khoản thành công!
   }
}

3/ Tại phương thức ViewDidLoad() đăng ký sự kiện cho nút Đăng ký(Trong đó btnSave là tên của button Đăng ký đã được đặt trong lúc thiết kế giao diện ứng dụng)

  btnSave.TouchUpInside += (sender, e) => Save();

Sử dụng SQLite trong iOS với Xamarin – Bài tập thực hành

Ứng dụng có chức năng xác thực tài khoản đăng nhập của người dùng. Tài khoản là hợp lệ nếu nhập đúng name và password được chứa trong bảng AccountTbl.

Sau khi nhập tên và mật khẩu và chọn “Đăng nhập“. Nếu tài khoản không hợp lệ, một hộp thoai thông báo xuất hiện “Tài khoản không hợp lệ!“. Ngược lại, ứng dụng thông báo “Tài khoản hợp lệ!

Trả lời