2015-04-06 2 views
0

Я нахожусь на sqlite android. Когда вы запускаете проект, у меня возникают проблемы. У меня есть 2 вещи. VivsHelper бывший и MainActivity является latter.Here мой код: класс VivzHelper:SQLite on android stop неожиданно

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 говорил, что арг для суперкласса недействителен, вы должны передать имя базы данных! Также проверьте, что вы создаете оператор, вы получили имя «+ NAME +» _ Имя VARCHAR (255)); «в нем и точка с запятой