2013-01-17 41 views
9

Tôi nghĩ rằng mình đã tạo một cơ sở dữ liệu sqllite với android nhưng mỗi lần tôi thực hiện chèn, nó xác nhận một cột không tồn tại. Làm thế nào tôi có thể xem giản đồ và là phương thức onCreate được gọi là tạo đối tượng?Lược đồ cơ sở dữ liệu Sqlite của Android

Trả lời

9

Bạn có thể làm điều đó bằng mã. Sqlite có một bảng gọi là "sqlite_master" chứa thông tin lược đồ.

/** 
    * Get all table Details from the sqlite_master table in Db. 
    * 
    * @return An ArrayList of table details. 
    */ 
    public ArrayList<String[]> getDbTableDetails() { 
     Cursor c = db.rawQuery(
       "SELECT name FROM sqlite_master WHERE type='table'", null); 
     ArrayList<String[]> result = new ArrayList<String[]>(); 
     int i = 0; 
     result.add(c.getColumnNames()); 
     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
      String[] temp = new String[c.getColumnCount()]; 
      for (i = 0; i < temp.length; i++) { 
       temp[i] = c.getString(i); 
      } 
      result.add(temp); 
     } 

     return result; 
    } 

Cách đơn giản hơn là chạy trên trình mô phỏng.

  1. mở DDMS quan điểm
  2. Tìm dữ liệu/dữ liệu/PACKAGENAME/cơ sở dữ liệu/YOURFILE
  3. Nhấp vào kéo từ nút db trên góc trên bên phải thể hiện trong hình ảnh.

mở enter image description here

+0

Cảm ơn bạn đã trả lời, tôi muốn thử và xem bằng cách sử dụng giả lập. Điều này có thể giải quyết như thế nào? – Paul

+0

Cảm ơn sự giúp đỡ của bạn, điều đó có vẻ tuyệt vời. – Paul

+0

@Paul đã cập nhật câu trả lời với hình ảnh. – wtsang02

1

Một cách khác để kiểm tra giản đồ cơ sở dữ liệu của bạn là để adb shell vào thiết bị (hoặc giả lập). Khởi chạy dòng lệnh của sqlite với: sqlite3 <path to your database> và nhập .schema tại dấu nhắc lệnh.

Xem: http://developer.android.com/tools/help/sqlite3.html

+1

Vì một lý do nào đó chạy "sqlite3" khiến tôi nhận được thông báo "/ system/bin/sh: sqlite3: không tìm thấy", nhưng tôi đã tìm được chương trình trong thư mục của trình duyệt gốc (mà tôi đã mua và cài đặt) bằng cách thực hiện "find | grep sqlite3 "(sau khi chạy" su "- mà tôi có thể làm vì điện thoại của tôi bắt nguồn từ) –

+0

Tôi tin rằng sqlite3 không khả dụng trên thiết bị, nó chỉ chạy trên trình mô phỏng. –

0

Bạn có thể lấy tên bảng như sau:

/** 
    * Get all table Details from the sqlite_master table in Db. 
    * 
    * SQlite has a table called "sqlite_master " which holds schema information. 
    * 
    * @return An ArrayList of table names. 
    */ 
    public ArrayList<String> getDbTableNames(SQLiteDatabase db) { 
     ArrayList<String> result = new ArrayList<String>(); 
     Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); 

      if (c.moveToFirst()) { 
       while (!c.isAfterLast()) { 
        result.add(c.getString(c.getColumnIndex("name"))); 
        c.moveToNext(); 
       } 
      } 

     return result; 
    } 
Các vấn đề liên quan