Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态创建SQLite表?_Android_Database_Sqlite_Android Sqlite - Fatal编程技术网

Android 动态创建SQLite表?

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

我有一个流媒体视频应用程序。在我的应用程序中,我有DB和一个表“保存的播放列表”。当用户单击“保存播放列表”按钮时,它会将播放列表保存到该表中。 我现在需要创建新表,用户点击视频“保存视频”并选择要保存的播放列表,如果没有播放列表,他需要创建一个。所以是这样的:

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();
            }
        }
    };