2016-05-18 18 views
1

私は、ユーザーが一時テーブルから選択した行を保存できるようにするアプリを持っています。ユーザーは新しいテーブルに名前を付けることができます。テーブルが既に存在する場合、行を挿入してトーストを与えないでください

私は、ユーザーが入力した名前を使用してテーブルを作成し、選択したすべての行を一時テーブルから新しいテーブルに入れることに成功しました。

ただし、入力したテーブル名が既に存在する場合は、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"); 
+0

を試してみてください? [このような](http://stackoverflow.com/questions/167576/check-if-table-exists-in-sql-server)?種類の種類: – UDKOX

+0

その答えでは、BEGINとENDの間で、私はあなたがデータベースで何かをやっていると仮定しています。私のケースでは、テーブルが存在する場合、データベースで何もしませんし、名前をすでに使用していることをユーザーに知らせるためにトーストします。これは参照している質問の形式を使用して可能ですか? – SillyFidget

+0

ちょうどその部分を除いて、BEGINまでコードを取ってください。また、テーブルを読んでみることもできます。ユーザーが "name"というテーブルを必要とするときは、id = 1の "name"テーブルから値を読み込み、その結果を確認してみてください。おそらくいくつかの例外を起こそうとしているかもしれません...多くの方法があります。 – UDKOX

答えて

2

あなたは、テーブルがSQLに存在するかどうかをチェックするコードを意味

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 
+1

素晴らしい - 完璧でとてもシンプルに動作します。私の脳は働いてはならない。どうもありがとうございます!! – SillyFidget

関連する問題