2011-09-19 90 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