2017-05-24 10 views
-1

私はチュートリアルでデータベースを作成しようとしていますが、それは私にクラッシュし続け、誰かが私に何かの方向性を与えてくれることを期待していました。AndroidのSQLiteのサンプルのアプリケーションが予期せず停止する

MainActivity.java

package com.example.dwalker.btv2; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     DatabaseHelper myDB = new DatabaseHelper(this); 
    } 
} 

DatabaseHelper.java

package com.example.dwalker.btv2; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by DWalker on 5/24/2017. 
*/ 

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = "events.db"; 
    public static final String TABLE_NAME = "event_table"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "EVENT"; 
    public static final String COL_3 = "EVENTDATE"; 
    public static final String COL_4 = "EVENTTIME"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     SQLiteDatabase db = this.getWritableDatabase(); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE event_table (ID INTEGER PRIMARY KEY AUTOINCREMENT, EVENT TEXT, EVENTDATE TEXT, EVENTTIME TEXT"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 

    } 
} 

私はそのだけで予期せず停止に私に言って、エミュレータ上でアプリケーションを実行します。私がしようとしているのは、dbファイルを作成して、正しく動作していることを確認できるようにすることだけです。あなたのクエリが失敗している

おかげ

DW

+2

LogCatを使用して、クラッシュに関連するJavaスタックトレースを調べます。https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this。おそらく、あなたの問題は 'SQLiteOperHelper'サブクラスのコンストラクタに' SQLiteDatabase db = this.getWritableDatabase(); 'があることです。 – CommonsWare

+0

最初にIDフィールドを_IDに変更すると、ビルトインされたものをデータをロードするのが簡単になります。 – danny117

答えて

0

は、あなたが(私もセミコロンを追加しました。しかし、これが必要な場合、私はわからないよ)最後にブラケットを欠けている:

db.execSQL("CREATE TABLE event_table (ID INTEGER PRIMARY KEY AUTOINCREMENT, EVENT TEXT, EVENTDATE TEXT, EVENTTIME TEXT);"); 

これにより、onCreate関数が失敗し、一般にアプリケーションがクラッシュします。

+0

それをキャッチするためにありがとう! –

関連する問題