Niit - Ict Hà Nội » Tin tức » Tin tức công nghệ » Bài Học lập trình Android Tại NIIT - ICT Hà Nội
Bài Học lập trình Android Tại NIIT - ICT Hà Nội

Khóa học lập trình Android Để truy cập dữ liệu của ứng dụng của bạn bằng thư viện persistence Room , bạn làm việc với các đối tượng truy cập dữ liệu hoặc DAO. Bộ Dao đối tượng này tạo thành thành phần chính của Phòng, vì mỗi DAO bao gồm các phương thức cung cấp quyền truy cập trừu tượng vào cơ sở dữ liệu của ứng dụng của bạn.

 

Bằng cách truy cập cơ sở dữ liệu bằng cách sử dụng một lớp DAO thay vì các trình tạo truy vấn hoặc các truy vấn trực tiếp, bạn có thể tách các thành phần khác nhau của kiến ​​trúc cơ sở dữ liệu của bạn. 

 

 Học lập trình Android


Hơn nữa, DAO cho phép bạn dễ dàng thử truy cập cơ sở dữ liệu khi bạn thử nghiệm ứng dụng của mình .Lưu ý: Trước khi thêm các lớp DAO vào ứng dụng của bạn, hãy thêm các tạo phẩm của Cấu phần Kiến trúc vào build.gradle tệp của ứng dụng của bạn .

 

Khóa học lập trình Android Một DAO có thể là một giao diện hoặc một lớp trừu tượng. Nếu đó là một lớp trừu tượng, nó có thể tùy chọn có một hàm khởi tạo lấy RoomDatabase tham số duy nhất của nó. Phòng tạo ra mỗi lần thực hiện DAO tại thời gian biên dịch.

 

Lưu ý: Phòng không hỗ trợ truy cập cơ sở dữ liệu trên luồng chính trừ khi bạn đã gọi đến trình tạo vì nó có thể khóa giao diện người dùng trong một khoảng thời gian dài. Truy vấn không đồng bộ — truy vấn trả về các trường hợp hoặc được miễn quy tắc này vì chúng truy vấn không đồng bộ trên chuỗi nền khi cần. allow Main Thread Queries() Live Data Flowable.

 

Xác định phương thức để thuận tiện

 

Khóa học lập trình Android Có nhiều truy vấn thuận tiện mà bạn có thể đại diện bằng cách sử dụng một lớp DAO. Tài liệu này bao gồm một số ví dụ phổ biến.

 

Chèn

 

Khi bạn tạo một phương thức DAO và chú thích nó @Insert, Room sẽ tạo ra một thực thi chèn tất cả các tham số vào cơ sở dữ liệu trong một giao dịch duy nhất.

 

Đoạn mã sau đây hiển thị một số truy vấn mẫu:

 

@Dao giao diện MyDao { @Insert ( onConflict = OnConflictStrategy . REPLACE ) vui vẻ insertUsers ( vararg người dùng : tài khoản ) @Insert vui insertBothUsers ( dùng 1 : tài khoản , người dùng 2 : tài khoản ) @Insert vui insertUsersAndFriends ( người sử dụng : tài khoản , bạn bè : Danh sách < Người dùng >) }

 

Khóa học lập trình Android Nếu @Insert phương thức chỉ nhận được 1 tham số, nó có thể trả về a long, là giá trị mới rowIdcho mục được chèn vào. Nếu tham số là một mảng hoặc một tập hợp, nó sẽ trả về long[]hoặc List<Long>thay vào đó.

 

Để biết thêm chi tiết, xem tài liệu tham khảo cho @Insert chú thích, cũng như tài liệu SQLite cho các bảng rowid .

 

Cập nhật

 

Các Update phương pháp thuận tiện sẽ thay đổi một tập hợp các thực thể, được cho là tham số, trong cơ sở dữ liệu. Nó sử dụng truy vấn khớp với khóa chính của mỗi thực thể.

 

Đoạn mã sau đây minh họa cách xác định phương thức này:

 

@Dao giao diện MyDao { @Update vui updateUsers ( người dùng vararg : tài khoản ) }

 

Khóa học lập trình Android Mặc dù thường không cần thiết, bạn có thể có phương thức này trả về một intgiá trị thay vào đó, cho biết số hàng được cập nhật trong cơ sở dữ liệu. 

 

Xóa bỏ

 

Các Delete phương pháp thuận tiện loại bỏ một tập hợp các thực thể, được đưa ra như các thông số, từ cơ sở dữ liệu. Nó sử dụng các khóa chính để tìm các thực thể cần xóa.

 

Đoạn mã sau đây minh họa cách xác định phương thức này:

 

@Dao giao diện MyDao { @Delete fun deleteUsers ( người dùng vararg : Người dùng ) }

 

Khóa học lập trình Android Mặc dù thông thường không cần thiết, bạn có thể có phương thức này trả về một intgiá trị thay vào đó, cho biết số lượng các hàng được loại bỏ khỏi cơ sở dữ liệu.

 

Truy vấn thông tin

 

@Query là chú thích chính được sử dụng trong các lớp DAO. Nó cho phép bạn thực hiện các hoạt động đọc / ghi trên cơ sở dữ liệu. Mỗi @Query phương thức được xác minh tại thời gian biên dịch, vì vậy nếu có vấn đề với truy vấn, lỗi biên dịch xảy ra thay vì lỗi thời gian chạy.

 

Khóa học lập trình Android Phòng cũng xác minh giá trị trả về của truy vấn sao cho nếu tên của trường trong đối tượng được trả về không khớp với tên cột tương ứng trong phản hồi truy vấn, Phòng thông báo cho bạn theo một trong hai cách sau:

 

Nó đưa ra một cảnh báo nếu chỉ có một số tên trường khớp với nhau.

 

Nó cung cấp cho một lỗi nếu không có tên trường phù hợp.

 

Truy vấn đơn giản:

 

@Dao giao diện MyDao { @Query ( "SELECT * FROM user" ) fun loadAllUsers (): Array < User > }

 

Đây là một truy vấn rất đơn giản tải tất cả người dùng. Tại thời gian biên dịch, Room biết rằng nó đang truy vấn tất cả các cột trong bảng người dùng. Nếu truy vấn chứa lỗi cú pháp hoặc nếu bảng người dùng không tồn tại trong cơ sở dữ liệu, Phòng sẽ hiển thị lỗi với thông báo thích hợp khi ứng dụng của bạn biên dịch.

 

Chuyển các tham số vào truy vấn

 

Khóa học lập trình Android Hầu hết thời gian, bạn cần chuyển các tham số vào các truy vấn để thực hiện các hoạt động lọc, chẳng hạn như chỉ hiển thị những người dùng lớn tuổi hơn một độ tuổi nhất định. Để thực hiện tác vụ này, hãy sử dụng các tham số phương thức trong chú thích Phòng của bạn, như được hiển thị trong đoạn mã sau:

 

@Dao giao diện MyDao { @Query ( "SELECT * FROM người dùng WHERE age>: minAge" ) fun loadAllUsersOlderThan ( minAge : Int ): Array < User > }

 

Khi truy vấn này được xử lý tại thời gian biên dịch, Room khớp với :minAge tham số bind với minAge tham số method. Phòng thực hiện trận đấu bằng cách sử dụng tên tham số. Nếu có sự không khớp, lỗi xảy ra khi ứng dụng của bạn biên dịch.

 

Bạn cũng có thể chuyển nhiều tham số hoặc tham chiếu chúng nhiều lần trong truy vấn, như được hiển thị trong đoạn mã sau:

 

@Dao giao diện MyDao { @Query ( "SELECT * FROM người dùng WHERE age GIỮA: minAge AND: maxAge" ) fun loadAllUsersBetweenAges ( minAge : Int , maxAge : Int ): Array < User > @Query ( "SELECT * FROM user WHERE first_name LIKE : tìm kiếm " + " HOẶC last_name LIKE: tìm kiếm " ) fun findUserWithName ( tìm kiếm : Chuỗi ): Danh sách < User > }

 

Trả về các tập con của cột

 

Khóa học lập trình Android Hầu hết thời gian, bạn chỉ cần lấy một vài trường của một thực thể. Ví dụ: giao diện người dùng của bạn có thể chỉ hiển thị tên và họ của người dùng thay vì mọi chi tiết về người dùng.