Ngân hàng câu hỏi của chương

Câu hỏi: PRM392 - Chương 6: Lưu trữ dữ liệu và Content Provider

36 câu trắc nghiệm kèm lời giải của môn Mobile Programming - Lập trình di động, xếp theo thứ tự nhập vào ngân hàng. Trang 2/2 — câu 21–36.

Danh sách câu hỏi

36/36 câuHết danh sách
Đề bài
new String[] {
  KEY_ID, COL1, COL2
}

; Cursor allRows =

Đề bài
myDatabase.query(true, DATABASE_TABLE, result_columns, null, null, null, null, null, null);

Which of the following prints out the values of COL1 column correctly if the result is not empty?

Aif (cursor.moveToFirst()) { do { System.out.println(cursor.getString(1)); } while (cursor.moveToNext()); }
Bdo { System.out.println(cursor.getString(0)); } while (cursor.moveToNext());
Cif (cursor.moveToFirst()) { do { System.out.println(cursor.getString(0)); } while (cursor.moveToNext()); }
Dif (cursor != null) { do { System.out.println(cursor.getString(1)); } while (!cursor.isNull()); }
Lời giải

Để in ra giá trị của cột COL1 trong kết quả không trống, chúng ta cần sử dụng phương thức getString() với chỉ số vị trí cột trong mảng result_columns. Trong trường hợp này, COL1 nằm ở vị trí thứ 1 trong mảng, vì KEY_ID và COL1 được đặt trước COL2. Do đó, chúng ta cần sử dụng chỉ số 1 trong phương thức getString(). Ngoài ra, chúng ta cần kiểm tra xem con trỏ của Cursor đã được đặt vào vị trí đầu tiên hay chưa bằng phương thức moveToFirst(). Nếu đã được đặt vào vị trí đầu tiên, chúng ta mới có thể bắt đầu lặp qua các hàng trong kết quả bằng phương thức do-while. Vì vậy, câu trả lời đúng là:

Lời giải
if (cursor.moveToFirst()) {
  do {
    System.out.println(cursor.getString(1));
  }
  while (cursor.moveToNext());
}
Mở trang câu hỏi này →
ATransactions ensure atomicity; either all operations succeed, or none do.
BTransactions improve database performance.
CTransactions are required by Android's SQLite implementation.
DTransactions simplify database code.
Lời giải
Khi thực hiện nhiều hoạt động trên cơ sở dữ liệu, việc sử dụng các giao dịch (transactions) được khuyến nghị rộng rãi vì lý do đảm bảo tính nguyên tử (atomicity). Điều này có nghĩa là nếu một trong các hoạt động không thành công, toàn bộ giao dịch sẽ bị hủy bỏ và không có thay đổi nào sẽ được lưu lại trong cơ sở dữ liệu. Điều này giúp duy trì tính toàn vẹn và ổn định của dữ liệu. Ngoài ra, giao dịch cũng giúp đảm bảo tính nhất quán (consistency) của dữ liệu, ngăn chặn các tình huống không mong muốn như dữ liệu bị trùng lặp hoặc không hợp lệ. Vì vậy, việc sử dụng giao dịch là một phần quan trọng trong việc quản lý cơ sở dữ liệu và đảm bảo tính tin cậy của ứng dụng.
Mở trang câu hỏi này →
AContent provider is not a local database and SQLite is a local database.
BContent provider is faster that SQLite.
CContent provider can share data with other application but SQLite cannot.
DSQLite can share data with other application but content provider cannot
Lời giải
Nhiệm vụ chính của SQLite và Content Provider là lưu trữ và quản lý dữ liệu trong ứng dụng di động. SQLite là một cơ sở dữ liệu địa phương, được tích hợp trực tiếp vào ứng dụng và cho phép lưu trữ dữ liệu trong một tệp tin duy nhất. Trong khi đó, Content Provider là một lớp trừu tượng cho phép các ứng dụng khác truy cập và sử dụng dữ liệu của ứng dụng khác. Điều này cho phép chia sẻ dữ liệu giữa các ứng dụng khác nhau, tạo điều kiện thuận lợi cho việc chia sẻ dữ liệu giữa các ứng dụng khác nhau. Do đó, Content Provider có thể chia sẻ dữ liệu với các ứng dụng khác nhưng SQLite không thể.
Mở trang câu hỏi này →
Ahttp://provider_name/table_name
Bcontent://authority/path/id
Cprovider://database_name/table_name
Ddatabase://authority/data_type
Lời giải
Để truy cập dữ liệu từ một Content Provider, chúng ta thường sử dụng URI (Uniform Resource Identifier) theo một định dạng cụ thể. Có bốn lựa chọn URI khác nhau được đề cập trong câu hỏi. Lựa chọn đầu tiên là http://provider_name/table_name, nhưng điều này không phải là định dạng URI chuẩn cho Content Provider. Lựa chọn thứ hai là content://authority/path/id, đây là định dạng URI được sử dụng phổ biến để truy cập dữ liệu từ Content Provider. Lựa chọn thứ ba là provider://database_name/table_name, nhưng nó không phải là định dạng URI chuẩn. Lựa chọn thứ tư là database://authority/data_type, đây cũng không phải là định dạng URI chuẩn cho Content Provider. Vì vậy, đáp án đúng cho câu hỏi này là content://authority/path/id.
Mở trang câu hỏi này →
AServices
BBroadcast Receivers
CActivities
DContent Providers
Lời giải
Trong Android, có một số thành phần giúp tạo nên giao diện người dùng (UI) của ứng dụng. Tuy nhiên, thành phần nào cung cấp giao diện người dùng tập trung vào một nhiệm vụ cụ thể mà người dùng có thể thực hiện?
Mở trang câu hỏi này →
ASQLiteDatabase
BSQLiteOpenHelper
CCursor
DContentValues
Lời giải
Để chèn một bản ghi vào cơ sở dữ liệu SQLite, bạn cần sử dụng lớp nào để biên dịch câu lệnh SQL? Câu trả lời đúng là lớp SQLiteDatabase. Lớp này cho phép bạn thực hiện các phương thức CRUD (Create, Read, Update, Delete) trên cơ sở dữ liệu SQLite. Để chèn một bản ghi, bạn cần sử dụng phương thức insert() của lớp SQLiteDatabase. Phương thức này yêu cầu bạn cung cấp một đối tượng ContentValues để chứa dữ liệu của bản ghi. Đối tượng ContentValues là một lớp được sử dụng để lưu trữ các giá trị của một bản ghi trong cơ sở dữ liệu. Nó cho phép bạn thêm, sửa, xóa các giá trị của một bản ghi một cách dễ dàng. Vì vậy, để chèn một bản ghi vào cơ sở dữ liệu SQLite, bạn cần sử dụng lớp SQLiteDatabase và phương thức insert() của nó.
Mở trang câu hỏi này →
AInternal Storage
BExternal Storage
CShared Preferences
DRoom database
Lời giải
Trong Android, có nhiều phương pháp lưu trữ cặp giá trị khóa-giá trị (key-value pairs). Tuy nhiên, phương pháp được sử dụng phổ biến nhất là Shared Preferences. Shared Preferences cho phép lưu trữ dữ liệu nhỏ như chuỗi, số nguyên, boolean, v.v. trong một tệp tin XML. Phương pháp này được sử dụng rộng rãi trong các ứng dụng Android để lưu trữ thông tin người dùng, như cài đặt, trạng thái ứng dụng, v.v. Ngoài ra, Shared Preferences cũng cho phép lưu trữ dữ liệu trong bộ nhớ cache, giúp tăng tốc độ truy xuất dữ liệu. Tuy nhiên, phương pháp này cũng có một số hạn chế, chẳng hạn như giới hạn kích thước dữ liệu và không phù hợp với dữ liệu lớn.
Mở trang câu hỏi này →
AonCreate() and onDestroy()
BonStart() and onStop()
ConStart() and onResume()
DonCreate() and onUpgrade()
EonCreate() and onDestroy()
Lời giải
Khi tạo một lớp mở rộng SQLiteOpenHelper, chúng ta thường phải thực hiện các phương thức đặc biệt để quản lý cơ sở dữ liệu SQLite. Hai phương thức quan trọng mà chúng ta nên ghi đè (override) là onCreate() và onUpgrade(). Phương thức onCreate() được gọi khi ứng dụng đầu tiên truy cập cơ sở dữ liệu. Trong phương thức này, chúng ta có thể tạo bảng và tạo dữ liệu mẫu. Phương thức onUpgrade() được gọi khi phiên bản cơ sở dữ liệu được nâng cấp. Chúng ta có thể sử dụng phương thức này để cập nhật cấu trúc bảng và dữ liệu khi phiên bản cơ sở dữ liệu thay đổi. Bằng cách ghi đè các phương thức này, chúng ta có thể quản lý cơ sở dữ liệu SQLite một cách hiệu quả và linh hoạt.
Mở trang câu hỏi này →
ATo store large datasets
BTo store private primitive data in key-value pairs
CTo manage SQLite databases
DTo send data over the network
Lời giải
Shared Preferences là một công cụ được sử dụng trong Android development để lưu trữ dữ liệu cơ bản, như số nguyên, chuỗi, boolean, v.v. trong các cặp khóa-giá trị. Nó được sử dụng để lưu trữ dữ liệu cá nhân, như cài đặt người dùng, trạng thái ứng dụng, v.v. Shared Preferences cho phép bạn lưu trữ dữ liệu trong một tệp tin XML, và bạn có thể đọc và viết dữ liệu từ tệp tin này. Nó được sử dụng rộng rãi trong các ứng dụng Android để lưu trữ dữ liệu cơ bản và dễ dàng truy cập.
Mở trang câu hỏi này →
AA path to a webpage or file, structured as file:// or http://.
BA path to the data of a Content Provider, structured as content://<authority>/<path>/<id>.
CA path to the internal database, accessible only by the originating application.
DA path to a resource on the server, used to call APIs.
Lời giải

URI nội dung (Content URI) là một loại URI được sử dụng để truy cập dữ liệu từ một Content Provider. Nó được cấu trúc theo dạng content:// <authority> / <path> / <id>, nơi <authority> là tên của Content Provider, <path> là đường dẫn đến dữ liệu và <id> là ID của dữ liệu cụ thể. Ví dụ, nếu bạn muốn truy cập dữ liệu từ Content Provider có tên là 'com.example.provider' và đường dẫn đến dữ liệu là 'users', thì URI nội dung sẽ là content://com.example.provider/users/1, nơi 1 là ID của dữ liệu cụ thể. URI nội dung được sử dụng rộng rãi trong các ứng dụng di động để truy cập và quản lý dữ liệu từ các Content Provider khác nhau.

Mở trang câu hỏi này →
AINSERT
BUPDATE
CDELETE
DSELECT
Lời giải
Để lấy dữ liệu từ một bảng trong cơ sở dữ liệu, bạn cần sử dụng lệnh SQL phù hợp. Trong bốn lựa chọn trên, chỉ có lệnh SELECT mới đáp ứng được yêu cầu này. Lệnh INSERT dùng để thêm mới dữ liệu, lệnh UPDATE dùng để cập nhật dữ liệu đã tồn tại và lệnh DELETE dùng để xóa dữ liệu khỏi bảng. Vì vậy, lệnh SELECT là lựa chọn đúng để lấy dữ liệu từ một bảng.
Mở trang câu hỏi này →
ATo send push notifications
BTo store structured data locally in a lightweight database
CTo manage user preferences
DTo build UI layouts
Lời giải
SQLite là một cơ sở dữ liệu nhẹ được sử dụng trong Android để lưu trữ dữ liệu có cấu trúc cục bộ. Mục đích chính của SQLite là cung cấp một cách dễ dàng để lưu trữ và truy xuất dữ liệu trong ứng dụng Android mà không cần phải kết nối đến một cơ sở dữ liệu bên ngoài. SQLite cho phép bạn tạo và quản lý các bảng, thêm, cập nhật và xóa dữ liệu, cũng như thực hiện các truy vấn phức tạp để lấy dữ liệu. Điều này giúp cho việc phát triển ứng dụng Android trở nên dễ dàng hơn và hiệu quả hơn. SQLite thường được sử dụng để lưu trữ dữ liệu người dùng, như thông tin đăng nhập, cài đặt ứng dụng, v.v.
Mở trang câu hỏi này →
AShared Preferences offer a lightweight and simple way to store small amounts of app data persistently.
BShared Preferences enhance the visual design of Android activities.
CShared Preferences manage network connectivity efficiently.
DShared Preferences handle background tasks seamlessly.
Lời giải
Sử dụng Shared Preferences mang lại nhiều lợi ích cho việc phát triển ứng dụng Android. Trước hết, nó cung cấp một cách đơn giản và nhẹ nhàng để lưu trữ dữ liệu nhỏ của ứng dụng một cách bền vững. Điều này giúp giảm thiểu thời gian và công sức khi cần lưu trữ hoặc truy xuất dữ liệu. Ngoài ra, Shared Preferences cũng giúp giảm thiểu việc sử dụng bộ nhớ của ứng dụng, từ đó cải thiện hiệu suất và tốc độ của ứng dụng. Điều này đặc biệt quan trọng đối với các ứng dụng có yêu cầu lưu trữ dữ liệu lớn hoặc cần truy xuất dữ liệu nhanh chóng.
Mở trang câu hỏi này →
ASQLiteDatabase.openDatabase()
BSQLiteDatabase.createDatabase()
CSQLiteDatabase.openOrCreateDatabase()
DSQLiteOpenHelper.getDatabase()
Lời giải
Trong Android, SQLite là một cơ sở dữ liệu quan hệ được sử dụng rộng rãi. Để mở hoặc tạo một cơ sở dữ liệu SQLite, chúng ta cần sử dụng phương thức thích hợp. Trong các lựa chọn trên, phương thức chính được sử dụng để mở hoặc tạo một cơ sở dữ liệu SQLite là SQLiteDatabase.openOrCreateDatabase(). Phương thức này cho phép chúng ta mở một cơ sở dữ liệu SQLite nếu nó đã tồn tại, hoặc tạo một cơ sở dữ liệu mới nếu nó chưa tồn tại. Điều này làm cho nó trở thành phương thức chính được sử dụng trong các ứng dụng Android.
Mở trang câu hỏi này →
ABy its column name.
BBy a unique ID.
CBy the name of the table.
DBy the name of the database.
Lời giải
Khi sử dụng cơ sở dữ liệu SQLite, một hàng được xác định bằng cách sử dụng một ID duy nhất. Mỗi hàng trong cơ sở dữ liệu SQLite đều có một ID duy nhất, được gọi là ROWID. ROWID là một số nguyên không âm và được tự động tạo ra khi hàng được thêm vào cơ sở dữ liệu. Điều này cho phép bạn truy cập và cập nhật hàng một cách dễ dàng và hiệu quả. Ví dụ, bạn có thể sử dụng câu lệnh SELECT * FROM bảng WHERE ROWID = ID_hàng để lấy thông tin của hàng có ID_hàng cụ thể.
Mở trang câu hỏi này →
ABy annotating Java classes with @Entity for entities and @Dao for DAOs.
BBy creating XML layout files for entities and DAOs.
CBy using predefined classes for entities and DAOs provided by Room database.
DEntities and DAOs are not used in Room database.
Lời giải
Trong khi làm việc với Room database, bạn cần hiểu rõ về khái niệm entity và data access object (DAO). Entity là một đối tượng trong cơ sở dữ liệu, đại diện cho một dòng dữ liệu trong bảng. DAO là một lớp giúp bạn tương tác với cơ sở dữ liệu, thực hiện các hành động như thêm, sửa, xóa dữ liệu. Để định nghĩa entity và DAO trong Room database, bạn cần sử dụng annotations @Entity và @Dao. Annotations @Entity giúp Room database nhận biết class Java của bạn là một entity, trong khi annotations @Dao giúp Room database nhận biết class Java của bạn là một DAO. Sau đó, bạn có thể sử dụng các phương thức của DAO để tương tác với cơ sở dữ liệu.
Mở trang câu hỏi này →