Android 若表已经存在,请不要插入行并给出toast

Android 若表已经存在,请不要插入行并给出toast,android,sqlite,Android,Sqlite,我有一个应用程序,允许用户从临时表中保存一些选定的行。用户可以命名新表 我正在使用用户输入的名称成功地创建一个表,并将临时表中所有选中的行放入新表中 但是,如果他们输入的表名已经存在,我想通过Toast通知他们并让他们选择另一个名称。我还在学习sqlite——有没有办法做到这一点 在我的头脑中,我使用某种if语句来检查表是否存在,然后执行代码,但其中一半在sqlite中,另一半在java中。我不确定这样做的正确方法。非常感谢您的任何建议 private void createTable() {

我有一个应用程序,允许用户从临时表中保存一些选定的行。用户可以命名新表

我正在使用用户输入的名称成功地创建一个表,并将临时表中所有选中的行放入新表中

但是,如果他们输入的表名已经存在,我想通过Toast通知他们并让他们选择另一个名称。我还在学习sqlite——有没有办法做到这一点

在我的头脑中,我使用某种if语句来检查表是否存在,然后执行代码,但其中一半在sqlite中,另一半在java中。我不确定这样做的正确方法。非常感谢您的任何建议

private void createTable() {
    dbHandler.getWritableDatabase().execSQL("CREATE TABLE IF NOT EXISTS " + favoriteName + " ( _id INTEGER PRIMARY KEY AUTOINCREMENT , exercise TEXT , bodypart TEXT , equip TEXT );");
    dbHandler.getWritableDatabase().execSQL("INSERT INTO " + favoriteName + " SELECT * FROM randomlypicked");
试一试


您是指检查SQL中是否存在表的代码?有点在这个答案中,从开始到结束,我假设您将处理数据库。在我的例子中,如果表存在,我不想对数据库做任何事情,也不想让用户知道名称已经被使用了。这是否可能使用您所引用问题的格式?只需编辑该部分,在开始之前获取代码。另外,你也可以试着在桌子上读一读。当用户想要一个名为“name”的表时,尝试从id=1的“name”表中读取一个值并检查结果。也许试着提出一些例外。。。可能有很多方法。令人惊讶-完美地工作,如此简单。我的大脑一定不工作了。非常感谢你!!
Cursor cursor = dbHandler.getReadableDatabase().rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName +"'", null);
if(cursor!=null) {
    if(cursor.getCount()>0) { //table already exists
        //show toast
        cursor.close();
        return;
    }
    cursor.close();
}
//create table and insert normally