我是Android开发的新手。请帮助我如何动态地在Sqlite数据库中存储列名。
在此处创建数据库:
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table contacts " +
"(id integer primary key, name text,phone text,email text, street text,place text)"
);
}
在此处插入查询:
public boolean insertContact (String name, String phone, String email,String street,String place)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("phone", phone);
contentValues.put("email", email);
contentValues.put("street", street);
contentValues.put("place", place);
db.insert("contacts", null, contentValues);
return true;
}
答案 0 :(得分:1)
您可以在onUpgrade()方法上使用ALTER TABLE函数,如下所示:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
}
}
显然,SQLite将根据列定义而有所不同
答案 1 :(得分:0)
您无需为表中的每一列提供值来插入新行。您只需将方法中的代码更改为:
即可public long insertContact(ContentValues contentValues) {
return db.insert("contacts", null, contentValues);
}
让调用函数决定要插入哪些值,可以是全部,部分或全部可用列。未指定的任何值将在表中为null
。例如,如果调用函数执行:
EditText name, email;
// ...
ContentValues values = new ContentValues();
values.put("name", name.getText().toString());
values.put("email", email.getText().toString());
insertContact(values);
将使用" name"在数据库中插入一个新行。和"电子邮件"已填写其余列null
。