我在数据库中有一个表,这个表的每个记录都需要存储 多个字符串,我不知道有多少字符串因为它在运行时决定了。
我想动态地在数据库表中添加图像uri,用户 在我的应用程序中动态添加图像,因为我需要保存 对他们来说,做正确的方法是什么?
我正按照此Insert new column into table in sqlite ?
尝试这样的事情String ColumnName=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "/" + "image1.jpg");
addNewColumn(ColumnName);
我使用下面的方法(没有工作): -
首先我要在表格中添加新列: -
public Cursor addColumn(String name){
db=dbhelper.getWritableDatabase();
return db.rawQuery("alter table info add column " + name + " text", null);
}
然后将uri插入此
public Boolean setUri(String columnName,String uri) {
ContentValues cv= new ContentValues();
cv.put(columnName,uri);
SQLiteDatabase db =dbhelper.getWritableDatabase();
long id=db.insert("info",null,cv);
if(id>-1)
return true;
else
return false;
}
上述方法是否正确?
我也搜索并在代码下面很好: -
private static final String ALTER = "ALTER TABLE user_table ADD user_street1 TEXT";
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL(ALTER);
}
我可以动态调用onUpgrade()方法并添加新列或任何其他方法来实现它吗?
提前致谢:)
答案 0 :(得分:0)
在表中包含任意数量的列是非常糟糕的。您应该使用带有外键的第二个表,该外键引用第一个表中行的ID。
table user
_id username ...
------------------------
1 abc
2 xyz
table photoInfo
userId photoUri
-------------------------------
1 /path/to/image1.jpg
1 /path/to/image2.jpg
2 /path/to/image3.jpg
1 /path/to/image4.jpg
要显示特定用户的照片,请使用JOIN。