2017-01-29 5 views
-1

私はJavaとAndroidスタジオの初心者です。リストアプリケーションを行う。そのためには、ユーザーの入力をデータベースに格納する必要があります。しかし、私は問題なくデータベースとテーブルを作成することができます。しかし、データベースに新しい行を追加しようとするたびに、エラーが発生します。ContentValues.insert()を使用してDBに行を追加できません。Android Studio(SQLiteLog:(1)そのようなテーブルはありません:....)

D/DatabaseHandler: ===Inside DatabaseHandler constructor=== 
D/DatabaseHandler: ===Inside onCreate from DatabaseHandler=== 
D/MainActivity: ==addToDatabase== 
    /SQLiteLog: (1) no such table: test_database 
    E/SQLiteDatabase: Error inserting STATE=14 TASK=13 ID =1 
         android.database.sqlite.SQLiteException: no such table: test_database (code 1): , while compiling: INSERT INTO test_database(STATE,TASK,ID ) VALUES (?,?,?) 

データベース(DatabaseHandler)を作成し、テーブルを作成する(のonCreateを()):

public class DatabaseHandler extends SQLiteOpenHelper { 
    public DatabaseHandler(Context context) { 
     super(context, "test_database", null, 1); 
     Log.d(TAG, "===Inside DatabaseHandler constructor==="); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d(TAG, "===Inside onCreate from DatabaseHandler==="); 
     // String database_table = "CREATE TABLE task(" + COLUMN_ID + " INT NOT NULL," + COLUMN_TASK + " INT NOT NULL," + COLUMN_STATE + " INT NOT NULL)"; 
     String  database_table = "CREATE TABLE task(ID INT NOT NULL, TASK INT NOT NULL, STATE INT NOT NULL)"; 
     db.execSQL(database_table); 
    } 
} 

を、最終的に私が使用される関数は、DBに新たな行を追加:

public int  addToDatabase(SQLiteDatabase access, String task) { 
    Log.d(TAG, "==addToDatabase=="); 
    if (access.isOpen() == false) { 
     Log.d(TAG, "[addToDatabase] Database is not Open"); 
     return (-1); 
    } 
    ContentValues values = new ContentValues(); 

    values.put("ID ", 1); 
    values.put("TASK", 13); 
    values.put("STATE", 14); 
    access.insert("test_database", null, values); 
    return (1); 

私はすでに他の既存の投稿を見て自分で問題を解決しようとしています。データベースが正しく作成されなかったために原因が考えられます。それにもかかわらず、データベースを作成する際にエラーが発生する可能性があります。新しいものを追加しようとしているときだけです。

私はまた、データベースのバージョンでレポートになる可能性があることを読んだ...しかし、私は実際には理由を理解していない。(私はまだ公式文書を探している)。

誰でも私を説明して問題を解決する方法を教えていただけますか? 感謝:)

答えて

2

使用の代わりに、この

access.insert("task", null, values) 

この

access.insert("test_database", null, values); 

またはあなたがuninstall your app manuallyをアプリテーブル名を更新して、再度実行してみた場合は

+1

ねえが、そんなにありがとう、それが完璧に動作します。しかし、私は手動でインターネット上で私のアプリをアンインストールするために見たが、何か役に立つものを見つけられなかった、あなたは方法で私にそれを行うことができますか?感謝 –

+0

私のコメントを編集しましたが、気づかなかったかもしれません。どうすれば私のアプリを手動でアンインストールできますか?ありがとう:) –

+0

@ S7_0解決策がうまくいけば、アプリをアンインストールする必要はありません。アプリを設定し、アプリマネージャーを探してアプリを探してクリックしてアンインストールを選択するか、[アンインストール](http: /www.wikihow。あなたがあなたのアプリのアイコンを長くクリックすると、アンインストールされた機能がポップアップします。 –

1

あなたのテーブル名は明らかに間違っています。テーブル作成クエリを変更します。

String database_table = "CREATE TABLE test_database(ID INT NOT NULL, TASK INT NOT NULL, STATE INT NOT NULL)"; 
0

あなたの「DatabaseHandler」を編集し、データベースの変更が発生しないようにプロジェクトを実行することに役立つかもしれません。

私は単に、アプリケーションからデータを取り出し、初めて のためにオープンすると、それは私たちのために働い:

Like That

関連する問題