2015-04-06 61 views
0

我在sqlite的android上。運行項目時,我遇到了一些麻煩。 我有2件事。該VivsHelper是前者MainActivity是latter.Here是我的代碼: 類VivzHelper:Android上的SQLite意外停止

public class VivzHelper extends SQLiteOpenHelper { 

private static final String DATABASE_NAME = "vivzdatabase"; 
private static final String TABLE_NAME = "VIVZTABLE"; 
private static final int DATABASE_VERSION = 1; 
private static final String UID = "_id"; 
private static final String NAME = "_Name"; 
private Context context; 
private static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME +" ("+ UID+" INTEGER PRIMARY KEY AUTOINCREMENT, " +NAME+"_Name VARCHAR(255));"; 
private static final String DROP_TABLE = "DROP TABLE "+ TABLE_NAME + " IF EXISTS"; 
public VivzHelper(Context context){ 
    super(context, "", null, 1); 
    this.context = context; 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    try { 
     db.execSQL(CREATE_TABLE); 
     Toast.makeText(context, "Oncreate called", Toast.LENGTH_LONG).show(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    try { 
     db.execSQL(DROP_TABLE); 
     onCreate(db); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

}

這裏是MainActivity:

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_main); 
    VivzHelper vivzHelper; 
    vivzHelper = new VivzHelper(this); 
    SQLiteDatabase sqLiteDatabase = vivzHelper.getWritableDatabase(); 

當我跑,我的應用程序停止unexpedtedly。這是爲什麼?幫我

這裏是日誌的貓:

04-06 23:48:39.736: E/AndroidRuntime(535): FATAL EXCEPTION: main 
04-06 23:48:39.736: E/AndroidRuntime(535): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqlitefull/com.example.sqlitefull.MainActivity}: java.lang.StringIndexOutOfBoundsException 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.os.Looper.loop(Looper.java:123) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-06 23:48:39.736: E/AndroidRuntime(535): at java.lang.reflect.Method.invokeNative(Native Method) 
04-06 23:48:39.736: E/AndroidRuntime(535): at java.lang.reflect.Method.invoke(Method.java:521) 
04-06 23:48:39.736: E/AndroidRuntime(535): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-06 23:48:39.736: E/AndroidRuntime(535): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-06 23:48:39.736: E/AndroidRuntime(535): at dalvik.system.NativeStart.main(Native Method) 
04-06 23:48:39.736: E/AndroidRuntime(535): Caused by: java.lang.StringIndexOutOfBoundsException 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ContextImpl.validateFilePath(ContextImpl.java:1579) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:539) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 
04-06 23:48:39.736: E/AndroidRuntime(535): at com.example.sqlitefull.MainActivity.onCreate(MainActivity.java:23) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-06 23:48:39.736: E/AndroidRuntime(535): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-06 23:48:39.736: E/AndroidRuntime(535): ... 11 more 
+1

請發佈堆棧跟蹤 –

+1

嘿Thuy Dinh,我認爲構造函數'super(context,」 「,null,1);'應該像這樣'super(context,DATABASE_NAME,null,DATABASE_VERSION);' – theapache64

+0

謝謝,我像你說的那樣修復了它。 – user3009966

回答

0

肯定的,@Shifar是說,對於超類的ARGS是無效的,你必須通過一個數據庫的名字!同時檢查你的創建語句,你得到了名稱「+ NAME +」_ Name VARCHAR(255));「在它和一個分號