Giới thiệu về Cơ sở dữ liệu SQLite của Android



Blog cung cấp giới thiệu về Cơ sở dữ liệu SQLite của Android

Giới thiệu về Cơ sở dữ liệu SQLite của Android

Cơ sở dữ liệu Android SQLite yêu cầu rất ít bộ nhớ (khoảng 250kb), có sẵn trên tất cả các thiết bị Android. Mọi thiết bị đều có hỗ trợ sẵn có cho cơ sở dữ liệu SQLite, được quản lý tự động trên android ngay từ khi tạo, thực thi đến quá trình truy vấn.





SQLite là một cơ sở dữ liệu mã nguồn mở, có sẵn trên mọi cơ sở dữ liệu Android. Nó hỗ trợ các tính năng cơ sở dữ liệu quan hệ tiêu chuẩn, như cú pháp SQL, giao dịch và câu lệnh SQL. SQLite đáng kể là phiên bản nhẹ hơn của cơ sở dữ liệu SQL, trong đó hầu hết các lệnh SQL không chạy trên cơ sở dữ liệu SQLite. Khi SQLite đã có, điều quan trọng là phải đảm bảo rằng một tính năng hoặc lệnh chỉ có sẵn trong SQLite thì nó mới có thể được thực thi.

Các ưu điểm cơ bản của SQLite:



  • Đó là một cơ sở dữ liệu trọng lượng nhẹ
  • Yêu cầu rất ít bộ nhớ
  • Cơ sở dữ liệu được quản lý tự động

SQLite chỉ hỗ trợ 3 kiểu dữ liệu:

  • Văn bản (như chuỗi) - để lưu trữ cửa hàng kiểu dữ liệu
  • Số nguyên (như int) - để lưu trữ khóa chính số nguyên
  • Real (giống như gấp đôi) - để lưu trữ các giá trị dài

Về cơ bản SQLite không xác thực các kiểu dữ liệu của chính nó. Nói cách khác, bất kỳ kiểu dữ liệu nào được sử dụng, chúng đều được gọi là hợp lệ.

Ví dụ, trong trường hợp này, cơ sở dữ liệu của một nhà điều hành cáp đã được thảo luận. Tại đây, một bảng mới được thêm vào với ‘text’ trong trường tên và hộp tên trường mang ‘textfield’. Một kiểu dữ liệu giá trị ngẫu nhiên đã được tạo. Kết quả cuối cùng là một bảng kiểm tra có kiểu dữ liệu không hợp lệ, cho thấy rằng SQLite không xác thực kiểu dữ liệu.



* Người ta có thể tìm thấy cơ sở dữ liệu bằng cách nhấp vào gói và truy cập thư mục dữ liệu vào thư mục cơ sở dữ liệu, nơi chứa tệp.

Lưu ý: Lớp SQLiteOpen Helper được sử dụng để quản lý việc tạo cơ sở dữ liệu và quản lý phiên bản.

Câu hỏi của Người dùng:

Việc thay đổi phiên bản db có phải là thay đổi phiên bản SQLite của đối tượng không?

Không có thay đổi nào trong phiên bản SQLite của đối tượng kể từ khi một lần xử lý việc tạo / cập nhật cơ sở dữ liệu và cái kia đang phát trên dữ liệu được giữ trong các bảng của cơ sở dữ liệu. Do đó không có sự phụ thuộc nào cả

cassandra cột họ vs bảng

Quay trở lại, khi chúng tôi mở rộng lớp SQLiteopenHelper, chúng tôi ghi đè các phương thức Oncreate & OnUpgrade trong lớp này. Khi cơ sở dữ liệu SQLite được truy cập, đôi khi có thể chậm, tùy thuộc vào độ phức tạp của truy vấn. Luôn luôn được ưu tiên để đảm bảo rằng các truy vấn chạy trong đệ quy ít tác động nhất hoặc tránh được khi một truy vấn SQL được thực thi. Ngoài ra nó làkhuyến nghị để thực hiện đồng bộ cơ sở dữ liệu.Các phương thức này được xử lý hoặc gọi tự động bởi khuôn khổ. Ngoài ra, cần lưu ý rằng bất cứ khi nào người ta tăng phiên bản DB, nó sẽ tự động gọi onUpgrade trên nó.

Bất cứ khi nào người ta nói về lớp trợ giúp mở SQLite, tên & phiên bản cơ sở dữ liệu của nó sẽ được chuyển vào hàm tạo của lớp mở rộng.

Ở đây, hai điều cần được tính đến:

  • Phương thức OnCreate () được gọi, nếu cơ sở dữ liệu không tồn tại.
  • Phương thức OnUpgrade () được gọi, nếu phiên bản cơ sở dữ liệu được cập nhật.

Lớp trợ giúp mở SQLite cung cấp tên và phiên bản trong phương thức khởi tạo. Getwriteabledatabase () được gọi và nếu cơ sở dữ liệu không tồn tại, nó sẽ OnCreate. Nếu trong trường hợp, cơ sở dữ liệu tồn tại và phiên bản được cập nhật, nó sẽ gọi OnUpgrade ().

Các phương pháp này có trên cuộc gọi đầu tiên của db không?

Chúng ta hãy lấy một ví dụ. Sau khi chúng tôi cài đặt một ứng dụng, nó sẽ tạo OnCreate và apk phương pháp được tải lên cửa hàng Google Play. Sau khi tải xuống phiên bản mới nhất của apk, nó sẽ kiểm tra cơ sở dữ liệu đã được cài đặt. Nếu nó có phiên bản cao hơn, nó sẽ gọi nâng cấp, nếu không, nó sẽ không làm gì cả.

Câu hỏi của người dùng

Có cần phải có quyền của người dùng để nâng cấp phiên bản db không?

Không, không bắt buộc phải có quyền, vì chúng tôi đang làm việc trên các tài nguyên ứng dụng nên chúng tôi không phải xin phép.

Câu hỏi của người dùng

Nếu user1 đã cài đặt ứng dụng của tôi và đó là phiên bản nâng cấp cho DB và sau đó user2 đang cài đặt ứng dụng mới và user1 đang nâng cấp ứng dụng. Trong trường hợp như vậy, nếu user1 trên phiên bản nâng cấp được gọi và đối với phương thức tạo user2 được gọi, có phải tất cả các phương thức từ android không?

Có, bởi vì chúng tôi chưa cài đặt bất kỳ phiên bản nào trên thiết bị. Không thành vấn đề, miễn là không có phiên bản cũ hơn được cài đặt vào thiết bị. Nó rất giống với việc xử lý khuôn khổ.

Câu hỏi của người dùng

Chúng ta có thể có đối tượng cơ sở dữ liệu SQLite không? Điều gì xảy ra nếu tên db của tôi cócuộc xung độtvới một đối tượng tên db khác?

Điều đó không quan trọng, vì cơ sở dữ liệu nằm trên tên gói của ứng dụng, điều này sẽ không xung đột ngay cả khi một thư mục con có cùng tên đã được tạo. Nó chỉ quan trọng ở mức gốc và việc xử lý ở mức gốc được thực hiện với sự trợ giúp của tên gói. Cần phải lưu ý rằng chúng ta không thể có hai ứng dụng có cùng tên gói, nhưng chúng ta có thể có 2 tên db khác nhau trong các gói khác nhau. Cơ sở dữ liệu SQLite đảm nhận việc cập nhật, xóa, chèn, truy vấn và đóng và mở các hoạt động cơ sở dữ liệu với sự trợ giúp của đối tượng.

Có một câu hỏi cho chúng tôi? Đề cập đến họ trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.

Bài viết liên quan:

java ngày mới từ chuỗi