2017-07-07 8 views
0

私はビデオのようなアンドロイドのスタジオでプロジェクトを作成しようとしています: Source 1Source 2 とここに私を追加し、Javaクラスで私のコードです:ここでSQLiteのデータベース私のアプリがクラッシュ

package com.example.asus.androidsqlitedatabase_1; 
    import android.content.Context; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteOpenHelper; 

    /** 
    * Created by ASUS on 7/6/2017. 
    */ 

    public class Databasehelperclass extends SQLiteOpenHelper { 
     public static final String DATABASE_NAME = "Student.db"; 
     public static final String TABLE_NAME = "Student_table"; 
     public static final String COLUMN1= "ID"; 
     public static final String COLUMN2 = "NAME"; 
     public static final String COLUMN3 = "SURNAME"; 
     public static final String COLUMN4 = "MARKS"; 

     public Databasehelperclass(Context context) { 
      super(context, DATABASE_NAME, null, 1); 
      SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase sqLiteDatabase) { 
      sqLiteDatabase.execSQL("Create Table" + TABLE_NAME + 
    "(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)");} 

     @Override 
     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1){ 
      sqLiteDatabase.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 
      onCreate(sqLiteDatabase); 
     } 
    } 

とは私MainActivity.java

package com.example.asus.androidsqlitedatabase_1; 

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

    public class MainActivity extends AppCompatActivity { 
     Databasehelperclass mydb; 

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

のコードしかし、私はgenymotionを使用してエミュレータにアプリケーションを実行すると、アプリが動作を停止し、それが実行されるカントが。誰か助けてください!

+2

'sqLiteDatabase.execSQLは( "表の作成" + TABLE_NAME + ...'あなたは** SPACEを必要とする**クラッシュに関する 'TABLE'をCREATE –

+0

詳細が便利だっただろう後。 – jdv

答えて

1

問題:クエリで間違っ間隔

ソリューション:クエリは、この形式である必要があります。

sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + "(" 
       + COLUMN1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
       + COLUMN2 + " TEXT, " 
       + COLUMN3 + " TEXT, " 
       + COLUMN4 + " INTEGER, " 
       + ")"; 

PS:それは代わりに静的列の変数名を使用することをお勧めしますクエリの名前。

はそれが役に立てば幸い:)

+0

ありがとうございました –

+0

あなたは歓迎されており、答えを受け入れることを忘れないでください。回答を受け入れられたとマークするには、答えの横にあるチェックマークをクリックして、灰色で塗りつぶしてから塗りつぶしにします。誰かの回答](https://stackoverflow.com/help/someone-answers) –

関連する問題