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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1667閲覧

【Android Studio】【SQLite】データベースのテーブルに新しい列を追加したい。

YonHan

総合スコア40

SQLite

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

Android Studio

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

0グッド

0クリップ

投稿2021/12/27 06:34

編集2021/12/27 15:09

前提・実現したいこと

アンドロイドスタジオで入力したものをDBに保存して表示するシステムを作っています。
このコードはもともと他の方がプログラムしたコードを参考にして書きました。
それに、自分がテーブルにTODO1NAMEという名前の新しい列を追加してみたところ、以下のようなエラーが表示されました。

45行目で不具合が起きているみたいです。

発生している問題・エラーメッセージ

E/SQLiteLog: (1) table lv1_data has no column named TODO1NAME

該当のソースコード

Java

1package com.example.adaptertest; 2 3import android.content.ContentValues; 4import android.content.Context; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.database.sqlite.SQLiteOpenHelper; 8 9//TODO todoテストの変更 10 11public class DBHelper_1 extends SQLiteOpenHelper { 12 13 public static final String DATABASE_NAME = "lv1.db"; 14 public static final String TABLE_NAME = "lv1_data"; 15 //public static final String COL1 = "ID"; 16 public static final String COL2 = "FIRSTNAME"; 17 public static final String COL3 = "LASTNAME"; 18 public static final String COL4 = "TODO1NAME"; 19 20 21 public DBHelper_1(Context context) { 22 super(context, DATABASE_NAME, null, 1); 23 } 24 25 @Override 26 public void onCreate(SQLiteDatabase db) { 27 String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + 28 " FIRSTNAME TEXT, LASTNAME TEXT, TODO1NAME TEXT)"; 29 db.execSQL(createTable); 30 } 31 32 @Override 33 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 34 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 35 onCreate(db); 36 } 37 38 //データの追加処理 39 public boolean addData(String tName, String dName,String todo1Name) { 40 SQLiteDatabase db = this.getWritableDatabase(); 41 ContentValues contentValues = new ContentValues(); 42 contentValues.put(COL2, tName); 43 contentValues.put(COL3, dName); 44 contentValues.put(COL4, todo1Name); 45 long result = db.insert(TABLE_NAME, null, contentValues);//この行で不具合が起きているようです 46 47 //日付が正しく挿入されていない場合は-1が返されます 48 if (result == -1) { 49 return false; 50 } else { 51 return true; 52 } 53 } 54 55 //1週間のクエリを繰り返す 56 public Cursor getListContents() { 57 SQLiteDatabase db = this.getWritableDatabase(); 58 Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); 59 return data; 60 } 61} 62

補足情報(FW/ツールのバージョンなど)

Gradleバージョン:7.0.2

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

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

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

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

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

YonHan

2021/12/28 07:45

DBの定義を変更するためのコードを一度実行する必要があるということですか?
hoshi-takanori

2021/12/28 10:53

リリースしたアプリのバージョンアップ時に DB のスキーマ変更があれば、既存ユーザーの DB を更新する処理が必要ですが、開発中ならいったんアプリを消して入れ直せば良いかも。
guest

回答1

0

自己解決

普通にアプリを消してから入れなおしたら動きましたw
hoshiさんありがとうございます。

投稿2021/12/29 03:28

YonHan

総合スコア40

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問