Android 动态创建SQLite表?
我有一个流媒体视频应用程序。在我的应用程序中,我有DB和一个表“保存的播放列表”。当用户单击“保存播放列表”按钮时,它会将播放列表保存到该表中。 我现在需要创建新表,用户点击视频“保存视频”并选择要保存的播放列表,如果没有播放列表,他需要创建一个。所以是这样的:Android 动态创建SQLite表?,android,database,sqlite,android-sqlite,Android,Database,Sqlite,Android Sqlite,我有一个流媒体视频应用程序。在我的应用程序中,我有DB和一个表“保存的播放列表”。当用户单击“保存播放列表”按钮时,它会将播放列表保存到该表中。 我现在需要创建新表,用户点击视频“保存视频”并选择要保存的播放列表,如果没有播放列表,他需要创建一个。所以是这样的: TABLE SAVED PLAYLISTS TABLE_ID | TABLE_NAME | TABLE_DATA | | TABLE SAVED VIDEOS VIDEO_ID | VID
TABLE SAVED PLAYLISTS
TABLE_ID | TABLE_NAME | TABLE_DATA
| |
TABLE SAVED VIDEOS
VIDEO_ID | VIDEO_NAME | VIDEO_DATA | PLAYLIST_ID
| |
我保存的播放列表表有以下代码:
private static final String SELECT_PLAYLISTS_SQL_QUESTION = "SELECT * FROM " + DatabaseDefinition.TABLE_SAVED_PLAYLISTS;
在主要活动中:
private View.OnClickListener btnSavePlaylistListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (gridCustomAdapter.getPlaylistId() == -1) {
String playlistDataTemp = new Gson().toJson(gridCustomAdapter.getCurrentPlaylist());
dbHandler.insertNewPlaylist(currentSearchContent, playlistDataTemp);
onSwipeRight();
}
}
};
您真的不应该在SQLiteOpenHelper的
onCreate
之外创建新表动态创建SQLite表吗?
为什么?提前创建所有需要的表。然后在需要时填写。相同类型的所有元素都应放入同一个表中。如果需要区分它们,请添加另一列。
public List<DatabasePlaylistObject> getPlaylists() {
List<DatabasePlaylistObject> resultList = new ArrayList<DatabasePlaylistObject>();
try {
openReadableInstance();
Cursor cursorNew = databaseInstance.rawQuery(SELECT_PLAYLISTS_SQL_QUESTION, null);
if (cursorNew.moveToFirst()) {
do {
DatabasePlaylistObject tempPlaylistObject = new DatabasePlaylistObject();
tempPlaylistObject.setId(cursorNew.getInt(0));
tempPlaylistObject.setPlaylistName(cursorNew.getString(1));
tempPlaylistObject.setPlaylistData(cursorNew.getString(2));
resultList.add(tempPlaylistObject);
}
while (cursorNew.moveToNext());
}
closeDatabaseInstance();
} catch (Exception e) {
e.printStackTrace();
}
return resultList;
}
public void removePlaylist(int playlistId) {
try {
openWritableInstance();
databaseInstance.delete(DatabaseDefinition.TABLE_SAVED_PLAYLISTS, DatabaseDefinition.COLUMN_ID_PLAYLIST + "=" + playlistId, null);
closeDatabaseInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
private View.OnClickListener btnSavePlaylistListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (gridCustomAdapter.getPlaylistId() == -1) {
String playlistDataTemp = new Gson().toJson(gridCustomAdapter.getCurrentPlaylist());
dbHandler.insertNewPlaylist(currentSearchContent, playlistDataTemp);
onSwipeRight();
}
}
};