我想問我的代碼中有什麼問題,我的foregin鍵不起作用。主鍵運行良好。 我有3個表,以這種方式創建:(有些話可以用波蘭語,因爲我正在做它傳遞的問題,但這些話不是importnat(我猜))Foregin關鍵問題android SQLite
private static final String TABLE_CONTACTS = "Kontrahenci";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "imie";
private static final String KEY_SURNAME = "nazwisko";
private static final String KEY_STREET = "ulica";
private static final String KEY_NRB = "numerBudynku";
private static final String KEY_NRL = "numerLokalu";
private static final String KEY_KOD = "KodPocztowy";
private static final String KEY_CITY = "Miejscowosc";
private static final String KEY_NIP = "NIP";
private static final String KEY_TEL = "Telefon";
private static final String KEY_EMAIL = "Email";
private static final String</b> DATABASE_CREATE = "CREATE TABLE "
+ TABLE_CONTACTS + " ("
+ KEY_ID +" INTEGER PRIMARY KEY, "
+ KEY_NAME +" TEXT, "
+ KEY_SURNAME+" TEXT, "
+KEY_STREET+" TEXT, "
+KEY_NRB+" INT(4), "
+KEY_NRL+" INTEGER(4), "
+KEY_KOD+" INTEGER(5), "
+KEY_CITY+" TEXT, "
+KEY_NIP + " TEXT, "
+ KEY_TEL+" TEXT, "
+KEY_EMAIL+" TEXT "+"); ";
private static final String TABLE_PRODUCTS= "Produkty";
private static final String KEY_IDPROD = "id";
private static final String KEY_NAMEPROD = "nazwa";
private static final String KEY_IMG = "obraz";
private static final String KEY_PRICE = "CENA";
private static final String DATABASE_PRODUCTS_CREATE = "CREATE TABLE "
+ TABLE_PRODUCTS + " ("
+ KEY_IDPROD +" INTEGER PRIMARY KEY, "
+ KEY_NAMEPROD +" TEXT, "
+ KEY_IMG+" NUMBER, "
+KEY_PRICE+" REAL" + "); ";
private static final String TABLE_ORDER = "Zamowienia";
private static final String KEY_IDORD = "id";
private static final String KEY_ID1 = "id_kon";
private static final String KEY_ID2 = "id_prod";
private static final String KEY_ILOSC = "ilosc";
private static final String KEY_STATUS = "Status";
private static final String DATABASE_ORDERS_CREATE = "CREATE TABLE " + TABLE_ORDER + " ("
+ KEY_IDORD + " INTEGER PRIMARY KEY, "
+ KEY_ID1 + " INTEGER, "
+ KEY_ID2 +" INTEGER, "
+ KEY_ILOSC + " INTEGER, "
+ KEY_STATUS + " TEXT, "
+"FOREIGN KEY (id_kon) REFERENCES "+ TABLE_CONTACTS +"(id), "
+"FOREIGN KEY (id_prod) REFERENCES " + TABLE_PRODUCTS +"(id));" ;
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_PRODUCTS_CREATE);
db.execSQL(DATABASE_ORDERS_CREATE);
if (!db.isReadOnly()) {
db.execSQL("PRAGMA foreign_keys=ON;");
}
}
後來我插入數據所有這樣:
public void addProdukt (Produkt produkt){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAMEPROD, produkt.getnazwa());
values.put(KEY_IMG, produkt.getZdj());
values.put(KEY_PRICE, produkt.getCena());
db.insert(TABLE_PRODUCTS, null, values);
db.close();}
public void addZamow (Zamowienie zamowienie){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID1, zamowienie.getIDk());
values.put(KEY_ID2, zamowienie.getIDp());
values.put(KEY_ILOSC, zamowienie.getIlosc());
values.put(KEY_STATUS, zamowienie.getStatus());
db.insert(TABLE_ORDER, null, values);
db.close();
}
沒有FOREIGN KEY
所有表工作正常,但是這一次用的時候我想獲得的所有數據都顯示我「找不到源代碼」。我通過更新Integer values
後來應用由按鈕來添加TABEL從紗廠這個關鍵,但即使我把手動爲
db.addZamow(new Zamowienie(1,1,x,tstatus));
我仍然有這樣的錯誤。要獲得這些元素,我使用這個功能的全部名單:
public List<Zamowienie> getAllZamowienie(){
SQLiteDatabase db = this.getWritableDatabase();
List<Zamowienie> zamowlist = new ArrayList<Zamowienie>();
String selectQuery = "SELECT * FROM " + TABLE_ORDER;
Cursor cursor = db.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do{
Zamowienie zamow = new Zamowienie();
zamow.setID(Integer.parseInt(cursor.getString(0)));
zamow.setIDk(Integer.parseInt(cursor.getString(1)));
zamow.setIDp(Integer.parseInt(cursor.getString(2)));
zamow.setIlosc(Integer.parseInt(cursor.getString(3)));
zamow.setStatus(cursor.getString(4));
zamowlist.add(zamow);
}while(cursor.moveToNext());
}
return zamowlist;
}
錯誤出現此行之後:zamow.setIDk(Integer.parseInt(cursor.getString(1)));
你有什麼想法,我怎樣才能使它工作?預先感謝您的答案。
請發表您的logcat的錯誤,也應該使用'cursor.getInt()',而不是'的Integer.parseInt(cursor.getString())'。 – Sam
'java.lang.NumberFormatException:無效int:「null」' - 是我的LogCat錯誤,另一個錯誤是關於我說的這一行。 – carolajnn