2010-12-29 20 views
27

Bảng cơ sở dữ liệu SQLite mà tôi đang sử dụng phải chịu thêm cột bất cứ khi nào tôi cần. Tôi không muốn mã hóa cứng các cột có nguy cơ cập nhật cơ sở dữ liệu và quên cập nhật các giá trị được mã hóa cứng. Làm thế nào tôi có thể trả về tất cả tên của các cột trong một bảng? (Tốt nhất là trong một String[])Trả về tất cả các cột của bảng SQLite trong Android

Trả lời

43

tốt nhất nếu bạn sử dụng một phương pháp truy vấn SQLiteDatabase dụ và sử dụng

SQLiteDatabase mDataBase; 
(some code here...) 
mDataBase = getReadableDatabase(); 
Cursor dbCursor = mDataBase.query(TABLE_NAME, null, null, null, null, null, null); 
String[] columnNames = dbCursor.getColumnNames(); 

columnNames phải có các tên cột

+1

và vui lòng cho tôi biết cách lấy giá trị từ một cột cụ thể? – Apurva

+0

Con trỏ dbCursor = mDataBase.query (TABLE_NAME, chuỗi mới [] {YOUR_COLUMN_NAME_1, YOUR_COLUMN_NAME_2, ....}, null, null, null, null, null); –

+0

getReadableDatabase là gì? –

6

Bạn có thể không cần danh sách tên cột.

Dường như bạn muốn danh sách tên cột để bạn có thể tạo danh sách cột được phân cách bằng dấu phẩy để chọn. Nếu đây là trường hợp, sau đó, nơi bạn sẽ thường đặt danh sách các tên cột trong truy vấn SELECT của bạn, bạn thay vì có thể sử dụng dấu hoa thị:

SELECT * FROM table WHERE ... 

Hoặc nếu bảng được aliased:

SELECT t.* FROM table AS t ... 

Dấu hoa thị có nghĩa là "tất cả các cột".

EDIT: Nếu bạn thực sự làm muốn có một danh sách các tên cột của một bảng, sau đó bạn có thể sử dụng đoạn mã sau:

Cursor c = db.rawQuery("SELECT * FROM table WHERE 0", null); 
try { 
    String[] columnNames = c.columnNames(); 
} finally { 
    c.close(); 
} 

Lưu ý rằng bạn không được sửa đổi mảng được trả về của Strings trong bất kỳ cách: https://code.google.com/p/android/issues/detail?id=3731

+0

Tại sao 'WHERE 0' được sử dụng? Chúng ta không thể làm mà không có? : O –

4

Một điều thú vị nữa là phương thức truy vấn chấp nhận null làm đầu vào cho các tham số cột. Nếu bạn nhập null, tất cả các cột sẽ được trả về.

db.query("Table_name",null,COLUMN_ID + "=" + id,null,null,null,null); 

Sẽ trả về tất cả các cột của dòng có id được chỉ định.

Bạn có thể xem định nghĩa phương thức tại đây.

+0

Từ 'if (cột! = Null && columns.length! = 0) { appendColumns (truy vấn, cột); } else { query.append ("*"); } ' – Renatinn

Các vấn đề liên quan