2011-11-14 21 views
14

Tôi tạo ra một bảng tên nguồn nhưng khi tôi chèn các giá trị trong nó, ngoại lệ này được ném:android.database.sqlite.SQLiteConstraintException: mã lỗi 19: chế failedexception

android.database.sqlite.SQLiteConstraintException: 
error code 19: constraint failedexception 

Đây là tạo của tôi bảng tuyên bố:

public static final String DATABASE_CREATE = 
    "CREATE TABLE " + table_resources + "(ID INTEGER PRIMARY KEY, 
    KEY_TYPE text, KEY_ENCODING text, KEY_WIDTH text, KEY_HEIGHT text, 
    KEY_DATA text, KeyIId text)"; 

sau đây là chèn của tôi mã:

JSONObject show = data.getJSONObject(i); 
if (show.get("type").equals("resource_updates")) { 
    JSONArray resources = show.getJSONArray("resources"); 
    try { 
     System.out.println("length of resources is is " + resources.length()); 
     for (int resourceIndex = 0; resourceIndex < resources.length(); resourceIndex++) { 
      type = resources.getJSONObject(resourceIndex).getString("type").toString(); 
      encoding = resources.getJSONObject(resourceIndex).getString("encoding").toString(); 
      data1 = resources.getJSONObject(resourceIndex).getString("data").toString(); 
      id = resources.getJSONObject(resourceIndex).getString("id").toString(); 
      try { 
       width = resources.getJSONObject(resourceIndex).getString("width").toString(); 
      } catch (Exception e) { 
       System.out.println(e); 
       width = "null"; 
      } 
      try { 
       height = resources.getJSONObject(resourceIndex).getString("height").toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       height = "null"; 
      } 
      db.insert(type,encoding,width,height, data1,iid); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println(e + "exception"); 
     System.out.println("exception in the resources"); 
    } 
} 

Bất cứ ai có thể cho tôi biết nơi nào có thể là vấn đề?

+0

Khi bạn mong đợi người khác gỡ lỗi mã của bạn, tốt nhất là nếu bạn cung cấp toàn bộ stacktrace. –

+0

đảm bảo, bảng của bạn có được tạo đúng cách không? Tôi nghĩ, truy vấn tạo của bạn cũng đang gặp sự cố. bạn không đưa ra một khoảng trắng sau tên bảng trong truy vấn tạo của bạn. các tên cột mà bạn đang sử dụng để truy xuất dữ liệu từ bảng khác với bạn đang sử dụng tên trong truy vấn tạo. – Hiral

Trả lời

32

Ràng buộc không thành công thường chỉ ra rằng bạn đã làm một cái gì đó giống như vượt qua một giá trị null vào một cột mà bạn khai báo là not null khi bạn tạo bảng của bạn.

+0

Bạn có thể đăng phương thức 'chèn' của mình không? Tôi cho rằng đó là một phương thức trợ giúp gọi phương thức 'SQLiteDatabase.insert' thực tế với dữ liệu của bạn – Craigy

+0

giải pháp hoàn hảo cho bảng không có khóa chính !! –

0

Để có thêm thông tin về lỗi SQLite, người ta có thể sử dụng dumpsys ADB:

adb shell dumpsys dbinfo -v 

kết hợp với grep:

adb shell dumpsys dbinfo -v | grep executeForLastInsertedRowId 

hoặc grep'ed hai lần:

adb shell dumpsys dbinfo -v | grep executeForChangedRowCount | grep failed 
Các vấn đề liên quan