質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

3252閲覧

android データベースに追加データを登録できない

hanamero50

総合スコア18

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/11/25 08:10

androidstudio でクイズゲームを作っていて、データベースにいくつか問題を登録してクイズ画面に表示することができたので追加でデータベースに問題を登録してみたのですが、上手く登録ができていないようで追加で登録した分の問題だけ表示されないです。
ついかで登録する際もinsert文ですればよいと認識しているのですが、もし間違っていましたら追加で登録する方法を教えていただきたいです。
よろしくお願いします。

DatabaseHelper.java

1public class DatabaseHelper extends SQLiteOpenHelper { 2 3 public DatabaseHelper(Context context) { 4 5 /* 6 ここで任意のデータベースファイル名と、バージョンを指定する 7 データベースファイル名 = MyTable.db 8 バージョン = 1 9 */ 10 super(context, "MyTable.db", null, 1); 11 } 12 13 14 15 @Override 16 public void onCreate(SQLiteDatabase db) { 17 // テーブルの作成 18 db.execSQL("CREATE TABLE MyTable " + 19 "(" + 20 "_id INTEGER PRIMARY KEY AUTOINCREMENT" + 21 ", Pref TEXT" + 22 ", City0 TEXT" + 23 ", City1 TEXT" + 24 ", City2 TEXT" + 25 ", City3 TEXT" + 26 ", City4 TEXT" + 27 ", Clear INTEGER" + 28 ")"); 29 30 // 初期データ投入 31 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('北海道','札幌','青森','盛岡','仙台','札幌',1);"); 32 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('山形県','山形','山形','宇都宮','前橋','東京',0);"); 33 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('群馬県','前橋','横浜','前橋','京都','水戸',0);"); 34 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('福井県','福井','秋田','盛岡','仙台','福井',0);"); 35 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('石川県','金沢','前橋','京都','金沢','盛岡',0);"); 36 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('兵庫県','神戸','神戸','京都','和歌山','盛岡',0);"); 37 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('山梨県','甲府','前橋','京都','金沢','甲府',0);"); 38 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('長野県','長野','前橋','東京','長野','盛岡',0);"); 39 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('岐阜県','岐阜','前橋','岐阜','仙台','札幌',0);"); 40 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('静岡県','静岡','静岡','神戸','京都','和歌山',0);"); 41 42 //追加登録分 43 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('沖縄','那覇','那覇','神戸','青森','和歌山',0);"); 44 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('大阪','大阪','静岡','大阪','京都','和歌山',0);"); 45 46 } 47 48 /* 49 * onUpgradeメソッド 50 * onUpgrade()メソッドはデータベースをバージョンアップした時に呼ばれる 51 */ 52 @Override 53 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 54 55 } 56

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLiteOpenHelperクラスのonCreate()は、端末の中にデータベースが存在しない状態で初めてアプリを実行したときしか走りません。端末で操作してアプリをアンインストールすればデータベースも消されるので、その後に実行すればonCreate()の中が改めて実行されます。

或いは、

java

1 @Override 2 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 3 if (newVersion == 2) { 4 //追加登録分 5 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('沖縄','那覇','那覇','神戸','青森','和歌山',0);"); 6 db.execSQL("INSERT INTO MyTable(Pref,City0, City1, City2, City3, City4, Clear) values ('大阪','大阪','静岡','大阪','京都','和歌山',0);"); 7 } 8 } 9

のようにonUpgradeの中に追加登録分を記述した上で、コンストラクターのsuper()の第4引数で与えているバージョン番号を2に増やせば、起動時に上記が実行されてデータベースへの追加ができるでしょう。さらに追加したいときは同じ要領でnewVersionが3のとき、4のとき・・・のようにしましょう。

投稿2018/11/25 15:16

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hanamero50

2018/11/26 02:55

大変わかりやすい説明で初心者の私でもできました、本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問