2016-06-13 91 views
0

我正在使用使用sqllite的CRUD操作。但是當我要運行該程序時顯示以下錯誤。在這裏我給出了我的databasehelper.java文件& mainactivity.java文件的代碼。不幸SQlLiteApp已停止

這是我的DatabaseHelper.java文件代碼。

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

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Student.db"; 
    public static final String TABLE_NAME = "Student_Table"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "SURNAME"; 
    public static final String COL_4 = "SUBJECT"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE" + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME VARCHAR (20) NOT NULL, SURNAME VARCHAR (20) NOT NULL, SUBJECT VARCHAR (20) NOT NULL)"); 
    } 

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

    public boolean insertData(String name,String surname,String subject){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_2,name); 
     contentValues.put(COL_3,surname); 
     contentValues.put(COL_4,subject); 
     long result = db.insert(TABLE_NAME,null,contentValues); 
     if (result == -1) 
      return false; 
     else 
      return true; 
    } 
} 

這裏是我的MainActivity.java文件

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
    DatabaseHelper myDb; 
    EditText editName,editSurname,editSubject; 
    Button btnAddData; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myDb = new DatabaseHelper(this); 

     editName = (EditText)findViewById(R.id.editText_Name); 
     editSurname = (EditText)findViewById(R.id.editText_SurName); 
     editSubject = (EditText)findViewById(R.id.editText_Subject); 
     btnAddData = (Button)findViewById(R.id.button_add); 
     AddData(); 
    } 

    public void AddData(){ 
     btnAddData.setOnClickListener(
       new View.OnClickListener(){ 
        @Override 
        public void onClick(View v) { 
        boolean isInserted = myDb.insertData(editName.getText().toString(),editSurname.getText().toString(),editSubject.getText().toString()); 
         if (isInserted == true) 
          Toast.makeText(MainActivity.this,"Data Inserted",Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(MainActivity.this,"Data Not Inserted",Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

} 

當我要保存的數據也顯示以下信息

「不幸的是SQlLiteApp已經停止。」

+1

向我們展示logcat –

+0

您的日誌在哪裏? – Basi

回答

0

看來你忘了CREATE TABLE後添加空間,因此EXISTS改變

"CREATE TABLE" + TABLE_NAME + "(ID 

"CREATE TABLE " + TABLE_NAME + " (ID 

"DROP TABLE IF EXISTS" + TABLE_NAME 

"DROP TABLE IF EXISTS " + TABLE_NAME 

注:請重試之前卸載應用程序。

+0

非常感謝..工作 – kishor

+0

@kishor快樂的幫助,享受。 –

0

從您的日誌: android.database.sqlite.S QLiteException:近「TABLEStudent_Table」:語法錯誤(代碼1) 使用下列內容:在表後短期加空格和之後仍然存在

db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME VARCHAR (20) NOT NULL, SURNAME VARCHAR (20) NOT NULL, SUBJECT VARCHAR (20) NOT NULL);"); 

在升級:

db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME +";"); 
+0

不工作..在這裏結果... – kishor

+0

謝謝..現在好了 – kishor