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

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

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

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

Android Studio

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

解決済

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

YonHan
YonHan

総合スコア40

SQLite

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

Android Studio

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

1回答

0評価

0クリップ

455閲覧

投稿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

package com.example.adaptertest; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; //TODO todoテストの変更 public class DBHelper_1 extends SQLiteOpenHelper { public static final String DATABASE_NAME = "lv1.db"; public static final String TABLE_NAME = "lv1_data"; //public static final String COL1 = "ID"; public static final String COL2 = "FIRSTNAME"; public static final String COL3 = "LASTNAME"; public static final String COL4 = "TODO1NAME"; public DBHelper_1(Context context) { super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + " FIRSTNAME TEXT, LASTNAME TEXT, TODO1NAME TEXT)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } //データの追加処理 public boolean addData(String tName, String dName,String todo1Name) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COL2, tName); contentValues.put(COL3, dName); contentValues.put(COL4, todo1Name); long result = db.insert(TABLE_NAME, null, contentValues);//この行で不具合が起きているようです //日付が正しく挿入されていない場合は-1が返されます if (result == -1) { return false; } else { return true; } } //1週間のクエリを繰り返す public Cursor getListContents() { SQLiteDatabase db = this.getWritableDatabase(); Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); return data; } }

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

Gradleバージョン:7.0.2

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

YonHan

2021/12/28 07:45

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

2021/12/28 10:53

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SQLite

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

Android Studio

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