12.28.2011

Unity nâng cao >> P5.1 Xử lý SQLite

Chào các độc giả yêu thích Unity!

Phần này là nội dung tiếp theo của chuyên mục Uniy và Database. Trong bài trước, chúng ta đã có cái nhìn tổn quan về các dạng CSDL có thể sử dụng trong game.
- Phần thao tác với file tôi không cần đề cập đến thì nó rất đơn giản và dễ dàng tìm kiếm trên Internet. Bạn nào có thắc mắc về xử lý file có thể đặt câu hỏi nếu cần.
- Buổi này, chúng ta trực tiếp sử dụng SQLite để chứa dữ liệu của game. Việc điều khiển và xử lý dữ liệu với SQLite là việc cũng đơn giản không kém xử lý file.
- Trước tiên ta cần có một vài thông tin về SQLite. SQLite là một bộ thư viện free được tạo ra với mục đích chạy linh động và nó thường được làm server cho các ứng dụng dữ liệu mini. Đa phần nó được xài trong các ứng dụng chạy trên điện thoại Android. Việc nó tương thích với các thiết bị di động làm cho nó rất phổ dụng.
- Để hiểu rõ hơn về nó mời bạn vào trang chủ http://www.sqlite.org/about.html

Giờ chúng ta từng bước thao tác nó với game nhé!

Bước 1: Tạo một database, trước tiên các bạn cần quan tâm đến một vài phần mềm free để thao tác với SQLite cho nhanh. Tôi ví dụ 2 công cụ có tên là:
1. Lita được tạo bởi Paul Robertson, Link: http://www.dehats.com/drupal/?q=node/58#install
2. Sqliteadmin : công cụ này khó xài hơn công cụ Lita:  http://sqliteadmin.orbmu2k.de/

Sau khi cài đặt chúng ta có  giao diện như trên, việc đơn giản là Tạo một database mới tuy nhiên ta chưa biết cách thao tác câu lệnh SQL. Chuyển sang bước 2 để làm việc này.


Bước 2: Sử dụng các câu lệnh với SQLite.
Tải document từ trang chủ của họ: http://www.sqlite.org/sqlite-doc-3070900.zip
Sau đó giải nén và chạy file Index.html để ta vọc cách sử dụng SQLite  >> SQL syntax
Bây giờ ta cần tạo một bảng trong database, tìm đến câu lệnh Create Table và kéo xuống dưới cùng 

CREATE TABLE t(x INTEGER PRIMARY KEY DESC, y, z); 
 
Lúc này ta có thể tạo bảng và trường cho database và học các câu lênh SQL - giống của Microsoft nhưng it lệnh hơn. Cần cái gì bạn tra cứu câu lệnh đó nhé, rất dễ dàng để vọc.
Nếu các bạn dùng Lita thì giao diện trực quan hơn và dễ dàng tạo database.
Sau khi có một file "database.db", giờ chúng ta có thể khai thác nó với Unity được rồi.

Bước 3: Cấu hình chạy trên Unity client
Tải 2 file thư viện đã có các hàm thao tác với SQLite về
Sau đó, giải nén ta sẽ được 2 file
 
Tiếp theo, tạo một Project mới bằng Unity, và copy 2 file này + file  "database.db" vừa tạo vào trong project.
Nhớ để cùng cấp thư mục với thư mục Assets của Unity.

OK, bước cấu hình đã xong.

Bước 4: Chạy câu lệnh đọc nội dung trong database.
Tạo đoạn mã JavaScript và quan trọng là import 2 thư viện dll lúc nãy.
import                    System.Data;

import                    Mono.Data.SqliteClient;

Tiếp theo là khởi tạo một biến string chứa đường dẫn của database, có thể dùng đường dẫn tương đối, ở đây tôi dùng tuyệt đối
var connectionString : String ="URI=file:E:/Library/Unity/Practive/SqLiteProj/Assets/newDB.db";

Tạo một đối tượng connection
var dbcon : IDbConnection = new SqliteConnection (connectionString );
dbcon.Open();

Tạo một đối tượng Command và câu lênh truy vấn
var dbcmd : IDbCommand = dbcon.CreateCommand ();

var sql : String = "SELECT Name,Pass FROMusers";

 dbcmd.CommandText = sql;

Tạo biến để chứa kết quả trả về, biến này thuộc kiểu IDataReader
        var reader : IDataReader = dbcmd.ExecuteReader();

       while( reader.Read() ) {

                varName : String = reader.GetString (0);

                varPass : String = reader.GetString (1);

                labelText+= (Name + " & "+ Pass+"\n");

       }
        Debug.Log(labelText);

 Giải phóng biến và đóng câu lệnh truy vấn sau khi nhận được dữ liệu
       reader.Close();

        reader =null;

        dbcmd.Dispose();

        dbcmd =null;

        dbcon.Close();

        dbcon =null;
  OK, lúc này ta sẽ có dữ liệu trong labelText, đó là một ví dụ rất dễ thao tác. Bạn cần nghiên cứu bước 2 nhiều hơn để hiểu các câu lệnh truy vấn, ta sẽ vận dụng nó và xử lý CSDL.
Chúc bạn vận dụng tốt SQLite vào trong game, hy vọng bài viết mang lại thú vị cho các bạn!

No comments:

Post a Comment