2011-09-19 91 views
0

我在Android中的sqlite中插入數據時遇到了一些問題。我寫了一個方法,用ContentValues這樣做,但它不能正常工作。下面是方法:Android sql插入查詢

DatabaseHelper.class

public boolean executeQuery(String tableName,String keys,Object value){ 
    return execQuery(tableName,keys,value); 
} 

private static boolean execQuery(String tableName,String key,Object value){ 
    sqliteDb = instance.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(key, value.toString()); 
    sqliteDb.insert(tableName, null, values); 

    return true; 

} 

而且我用這那樣:

dbHelper.executeQuery("users", "seed", seed); // string 
dbHelper.executeQuery("users", "id", id); // int 
dbHelper.executeQuery("users", "name", name); // string 
dbHelper.executeQuery("users", "lang", lang); // string 

而問題是,我這個方法插入所有的值作爲單列數據庫,但我希望所有數據都是一行的一部分。

我必須做些什麼來讓事情正常工作? 我對sqlite不太好,所以請原諒我,如果我的問題有點傻...

在此先感謝!

回答

5
private static boolean execQuery(String tableName,String seed,String id,String name, String lang){ 

    sqliteDb = instance.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
     values.put("seed", seed); 
     values.put("id", id); 
     values.put("name", name); 
     values.put("lang", lang); 

    sqliteDb.insert(tableName, null, values); 
return true; 
    } 

dbHelper.executeQuery("users",seed,id, name,lang); // string 

EDITED

private void execQuery(String tableName,ContentValues val) 
{ 
    sqliteDb = instance.getWritableDatabase();  
    sqliteDb.insert(tableName, null, val); 
    return true; 
} 

呼叫

ContentValues values = new ContentValues(); 
     values.put("seed", seed); 
     values.put("id", id); 
     values.put("name", name); 
     values.put("lang", lang); 
    dbHelper.executeQuery("users",values); // string 
+0

沒關係,但是如果我想用這種方法在其他表中也插入數據,哪些沒有這些行?有沒有辦法把鍵值放在方法中,而不是把它們全部寫成方法中的參數頭部? –

+0

ya使用可以爲不同的表格創建一個單獨的字符串數組 ,比如String [] fieldtable = {「seed」,「id」,「name」,「lang」}; private static boolean execQuery(String tableName,String [] field,String seed,String id,String name,String lang –

+0

只傳遞contentvalues作爲參數在你的方法中 –

2

您應該使用相同的ContentValues對象來添加所有您想要的列。就像這樣:

Content values= new ContentValues(); 
    values.add("seed",seed); 
    values.add("id",id); 
    values.add("name",name); 
    values.add("lang",lang); 
    sqliteDb.insert(tableName,null,values); 
1

你必須通過串鍵數組和對象數組

dbHelper.executeQuery("users", /*Array of seed,id,name,lang*/, /*Object Array of their value*/); 


and use 
values.put(key[i], value[i].toString()); for all i=0 to n