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

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

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

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

Q&A

1回答

2755閲覧

ActiveAndroidでno such tableと出てしまう

yomogi259

総合スコア7

Android Studio

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

0グッド

0クリップ

投稿2017/09/24 05:51

編集2017/09/24 13:54

###前提・実現したいこと
初めて質問させていただきます。メモ帳を作りたいと思い、
"https://akira-watson.com/android/activeandroid.html"
こちらのサイトを参考にプログラムを作成しましたが、saveData(),readData()の時にno such tableエラーが発生してしまっています。
どのように修正すればエラーはなくなりますでしょうか?至らぬ点も多々あると存じますがご指摘よろしくお願いいたします。

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

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.com.myapplication"> <application android:name="com.activeandroid.app.Application" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="AA_DB_NAME" android:value="testDB.db" /> <meta-data android:name="AA_DB_VERSION" android:value="1" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

readData()時

test.com.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: test.com.myapplication, PID: 3314 android.database.sqlite.SQLiteException: no such table: testDB (code 1): , while compiling: SELECT * FROM testDB at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316) at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255) at com.activeandroid.Model.rawQuery(Model.java:349) at com.activeandroid.query.From.execute(From.java:155) at test.com.myapplication.MainActivity.readData(MainActivity.java:73) at test.com.myapplication.MainActivity.access$300(MainActivity.java:15) at test.com.myapplication.MainActivity$2.onClick(MainActivity.java:54) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

###該当のソースコード
文字数制限にかかってしまったので掲載できませんが上記参考サイトのサンプルプログラムと同じです。

###試したこと
"https://qiita.com/stenpel/items/1dc6e49d9ba876a6024c"
こちらのサイトを参考にonUpgrade()が呼ばれるようにmanifests上で
<meta-data android:name="AA_DB_VERSION" android:value="1" />

<meta-data android:name="AA_DB_VERSION" android:value="2" />
に変更しました。
また、アプリ削除も行いましたがno such tableと出てしまいました。
databasesの中身をlsコマンドで探したところ、testDB.dbはありました。

###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio 2.1.2
ActiveAndroid 3.0

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

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

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

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

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

guest

回答1

0

まず、testDB.dbはデータベースファイルであり、エラーメッセージにあるtestDBテーブルとは全くの別物です。

Modelクラスを継承したクラスに下記のアノテーションは記載しましたか?

Java

1@Table(name = "testDB")

投稿2017/09/24 12:17

yona

総合スコア18155

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

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

yomogi259

2017/09/24 12:27

回答ありがとうございます。ご指摘いただいたアノテーション@Tableは記載しております。
yona

2017/09/24 12:34

ではアプリケーションクラスは継承して初期化処理を行っていますか?
yomogi259

2017/09/24 12:38

それはしていませんでした...どのように行えばよいのでしょうか?
yomogi259

2017/09/24 13:21

manifestsのapplicationでactiveandroidを指定しているので自動的に初期化はされるようです。
yona

2017/09/24 13:28

どちらか一方のエラーメッセージを削除して、マニフェストを追加できますか?
yomogi259

2017/09/24 13:55

sevaを消してmanifestsを追加させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問