私はこのSQLiteExceptionを取得しています:そのようなテーブルはありません。
私のコードには何の不具合も見られません。私は、アプリをアンインストールし、再インストールするよりも、それは動作しませんでした清掃しようとしました。解決方法:SQLiteException:そのようなテーブルはありませんか?
コード:
DatabaseContainerAdapter.java:例外は唯一TABLE_NAME3です
package com.example.batrad.expenseassist;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.Editable;
/**
* Created by batrad on 11/19/2016.
*/
public class DatabaseContainerAapter {
DatabaseContainer dc;
DatabaseContainerAapter(Context context) {
dc = new DatabaseContainer(context);
}
public Cursor showSubData(String[] coloumns, String[] categoryNameandMonth) {
Cursor cr = null;
SQLiteDatabase db = dc.getWritableDatabase();
try {
Cursor cursor = db.query(DatabaseContainer.TABLE_NAME2, coloumns, DatabaseContainer.CATEGORY + "=? and " + DatabaseContainer.MONTH + "=?", categoryNameandMonth, null, null, null);
cr = cursor;
} catch (SQLException e) {
e.printStackTrace();
}
return cr;
}
public Cursor showData(String[] coloumns, String[] month) {
Cursor cr = null;
SQLiteDatabase db = dc.getWritableDatabase();
try {
Cursor cursor = db.query(DatabaseContainer.TABLE_NAME1, coloumns, DatabaseContainer.MONTH + "=?", month, null, null, null);
cr = cursor;
} catch (SQLException e) {
e.printStackTrace();
}
return cr;
}
public Cursor showDataForParticularCategory(String[] coloumns, String[] categoryArray) {
Cursor cr = null;
SQLiteDatabase db = dc.getWritableDatabase();
try {
Cursor cursor = db.query(DatabaseContainer.TABLE_NAME1, coloumns, DatabaseContainer.CATEGORY + "=?", categoryArray, null, null, null);
cr = cursor;
} catch (SQLException e) {
e.printStackTrace();
}
return cr;
}
public long insertSubCategory(String category, String subcategory, String date, int amount, String month) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.CATEGORY, category);
cv.put(DatabaseContainer.DATE, date);
cv.put(DatabaseContainer.SUBAMOUNT, amount);
cv.put(DatabaseContainer.SUBNAME, subcategory);
cv.put(DatabaseContainer.MONTH, month);
// cv.put(DatabaseContainer.ID, System.currentTimeMillis());
long id = db.insert(DatabaseContainer.TABLE_NAME2, null, cv);
return id;
}
public long insertCategory(String categoryName, String month, int amount, int icon) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.MONTH, month);
cv.put(DatabaseContainer.AMOUNT, amount);
cv.put(DatabaseContainer.ICON, icon);
cv.put(DatabaseContainer.CATEGORY, categoryName);
// cv.put(DatabaseContainer.ID, System.currentTimeMillis());
long id = db.insert(DatabaseContainer.TABLE_NAME1, null, cv);
return id;
}
public long updateCategory(int totalAmount, String[] categoryName) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.AMOUNT, totalAmount);
long id = db.update(DatabaseContainer.TABLE_NAME1, cv, DatabaseContainer.CATEGORY + "=?", categoryName);
return id;
}
public Cursor showBudget(String[] coloumns, String[] month) {
Cursor cr = null;
SQLiteDatabase db = dc.getWritableDatabase();
try {
Cursor cursor = db.query(DatabaseContainer.TABLE_NAME3, coloumns, DatabaseContainer.MONTH + "=?", month, null, null, null);
cr = cursor;
} catch (SQLException e) {
e.printStackTrace();
}
return cr;
}
public long insertBudget(String budget, int month) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.MONTH, month);
cv.put(DatabaseContainer.BUDGET, budget);
// cv.put(DatabaseContainer.ID, System.currentTimeMillis());
long id = db.insert(DatabaseContainer.TABLE_NAME3, null, cv);
return id;
}
public long updateBudget(String budget, String[] month) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.BUDGET, budget);
long id = db.update(DatabaseContainer.TABLE_NAME3, cv, DatabaseContainer.MONTH + "=?", month);
return id;
}
class DatabaseContainer extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "expenseDatabase";
public static final int DATABASE_VERSION = 7;
public static final String TABLE_NAME1 = "categorytable";
public static final String CATEGORY = "category";
public static final String MONTH = "month";
public static final String AMOUNT = "amount";
public static final String ICON = "icon";
public static final String TABLE_NAME2 = "subcategorytable";
public static final String SUBNAME = "subname";
public static final String SUBAMOUNT = "subamount";
public static final String DATE = "date";
public static final String TABLE_NAME3 = "budgetTable";
public static final String YEAR = "year";
public static final String BUDGET = "budget";
public static final String CREATE_TABLE1 = "CREATE TABLE " + TABLE_NAME1 + " (" + CATEGORY + " varchar (20) ," + MONTH + " varchar(150)," + AMOUNT + " integer (10)," + ICON + " varchar(50));";
public static final String DROP_TABLE1 = "DROP TABLE IF EXISTS " + TABLE_NAME1;
public static final String CREATE_TABLE2 = "CREATE TABLE " + TABLE_NAME2 + " (" + MONTH + " varchar (20) ," + CATEGORY + " varchar (20) ," + SUBNAME + " varchar (20) ," + SUBAMOUNT + " integer(10)," + DATE + " varchar(20));";
public static final String DROP_TABLE2 = "DROP TABLE IF EXISTS " + TABLE_NAME2;
public static final String CREATE_TABLE3 = "CREATE TABLE " + TABLE_NAME3 + " (" + MONTH + " varchar (20) ," + YEAR + " varchar (20) ," + BUDGET+" integer(10) ;";
public static final String DROP_TABLE3 = "DROP TABLE IF EXISTS " + TABLE_NAME3;
public DatabaseContainer(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
try {
sqLiteDatabase.execSQL(CREATE_TABLE1);
sqLiteDatabase.execSQL(CREATE_TABLE2);
sqLiteDatabase.execSQL(CREATE_TABLE3);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
try {
sqLiteDatabase.execSQL(DROP_TABLE1);
sqLiteDatabase.execSQL(DROP_TABLE2);
sqLiteDatabase.execSQL(DROP_TABLE3);
} catch (SQLException e) {
}
onCreate(sqLiteDatabase);
}
}
}
、他のテーブルはOKです。
コントロールがonCreateメソッド(デバッガでチェックしたもの)とonCreate()メソッドの中で、すべてのテーブルのCreate Tableクエリを実行しているので、私はここで全く混乱しています。他のテーブルが作成されていますが、TABLE_NAME3のみ例外が発生しています。
私が上記のコード(DatabaseContainerAdapter.java)で使用している3つの方法です。
public Cursor showBudget(String[] coloumns, String[] month) {
Cursor cr = null;
SQLiteDatabase db = dc.getWritableDatabase();
try {
Cursor cursor = db.query(DatabaseContainer.TABLE_NAME3, coloumns, DatabaseContainer.MONTH + "=?", month, null, null, null);
cr = cursor;
} catch (SQLException e) {
e.printStackTrace();
}
return cr;
}
public long insertBudget(String budget, int month) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.MONTH, month);
cv.put(DatabaseContainer.BUDGET, budget);
// cv.put(DatabaseContainer.ID, System.currentTimeMillis());
long id = db.insert(DatabaseContainer.TABLE_NAME3, null, cv);
return id;
}
public long updateBudget(String budget, String[] month) {
SQLiteDatabase db = dc.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DatabaseContainer.BUDGET, budget);
long id = db.update(DatabaseContainer.TABLE_NAME3, cv, DatabaseContainer.MONTH + "=?", month);
return id;
}
私はこれらの事を試してみました:
- クリーニングし、プロジェクトを再構築します。
- データベースバージョンの変更。
- アプリケーションをアンインストールしてから、再インストールしてください。
- キャッシュとアプリのデータをクリアしています。
何も私のために働いていません。
Exception
13658-13658/com.example.batrad.expenseassist E/SQLiteLog: (1) no such table: budgetTable
12-06 11:26:24.849 13658-13658/com.example.batrad.expenseassist W/System.err: android.database.sqlite.SQLiteException: no such table: budgetTable (code 1): , while compiling: SELECT budget FROM budgetTable WHERE month=?
12-06 11:26:24.849 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1355)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1202)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1073)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1241)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at
com.example.batrad.expenseassist.DatabaseContainerAapter.showBudget(DatabaseContainerAapter.java:103)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at com.example.batrad.expenseassist.MainActivity.setBudget(MainActivity.java:82)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at com.example.batrad.expenseassist.MainActivity.onCreate(MainActivity.java:76)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.Activity.performCreate(Activity.java:6304)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2539)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.ActivityThread.access$900(ActivityThread.java:159)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
12-06 11:26:24.850 13658-13658/com.example.batrad.expenseassist W/System.err: at android.os.Looper.loop(Looper.java:152)
12-06 11:26:24.851 13658-13658/com.example.batrad.expenseassist W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5507)
12-06 11:26:24.851 13658-13658/com.example.batrad.expenseassist W/System.err: at java.lang.reflect.Method.invoke(Native Method)
12-06 11:26:24.851 13658-13658/com.example.batrad.expenseassist W/System.err: at
updateBudget方法をexcecutingながら、私はこのエラーを取得する:CREATE_TABLE3ため
12-06 11:46:03.470 20868-20868/com.example.batrad.expenseassist E/SQLiteDatabase: Error inserting month=11 budget=537
android.database.sqlite.SQLiteException: no such table: budgetTable (code 1): , while compiling: INSERT INTO budgetTable(month,budget) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1508)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1380)
at com.example.batrad.expenseassist.DatabaseContainerAapter.insertBudget(DatabaseContainerAapter.java:118)
at com.example.batrad.expenseassist.BudgetDialogFragment$2$1.onClick(BudgetDialogFragment.java:55)
at android.view.View.performClick(View.java:5233)
at android.view.View$PerformClick.run(View.java:21209)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:152)
at android.app.ActivityThread.main(ActivityThread.java:5507)
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)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-06 11:26:24.851 13658-13658/com.example.batrad.expenseassist W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
おかげでトン、あなたは私の一日保存しました。 –
:)。どういたしまして – Reena