2012-04-02 3 views
0

こんにちは、私は問題があります。04-02 15:03:22.624:E /データベース(390):CREATE TABLEが存在しない場合は0x267938のエラー1(「表示」の近く:構文エラー)

public void open(){ //il database su cui agiamo è leggibile/scrivibile 
     mDb=mDbHelper.getWritableDatabase(); 

} 


public void close(){ //chiudiamo il database su cui agiamo 
     mDb.close(); 
} 


//i seguenti 2 metodi servono per la lettura/scrittura del db. aggiungete e modificate a discrezione 
// consiglio:si potrebbe creare una classe Prodotto, i quali oggetti verrebbero passati come parametri dei seguenti metodi, rispettivamente ritornati. Lacio a voi il divertimento 



public void insertListView(String header,String footer,String activity){ //metodo per inserire i dati 
     ContentValues cv=new ContentValues(); 
     cv.put(ListViewMetaData.LIST_VIEW_HEADER_KEY, header); 
     cv.put(ListViewMetaData.LIST_VIEW_FOOTER_KEY, footer); 
     cv.put(ListViewMetaData.LIST_VIEW_ACTIVITY_KEY, activity); 
     mDb.insert(ListViewMetaData.LIST_VIEW_TABLE, null, cv); 
} 


public boolean delete(String row) { 

    return mDb.delete(ListViewMetaData.LIST_VIEW_TABLE, ListViewMetaData.ID + "=" + row, null) > 0; 

} 



public Cursor fetchListView(){ //metodo per fare la query di tutti i dati 
     return mDb.query(ListViewMetaData.LIST_VIEW_TABLE, null,null,null,null,null,null);    
} 


public Cursor fetchListViewByActivity(String activity){ 
     String[] act_query={activity}; 
     return mDb.query(ListViewMetaData.LIST_VIEW_TABLE,null,ListViewMetaData.LIST_VIEW_ACTIVITY_KEY+"=?",act_query,null,null,null);    
} 


static class ListViewMetaData { // i metadati della tabella, accessibili ovunque 
     static final String LIST_VIEW_TABLE = "list View"; 
     static final String ID = "_id"; 
     static final String LIST_VIEW_HEADER_KEY = "header"; 
     static final String LIST_VIEW_FOOTER_KEY = "footer"; 
     static final String LIST_VIEW_ACTIVITY_KEY = "activity"; 
} 


private static final String LIST_VIEW_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " //codice sql di creazione della tabella 
       + ListViewMetaData.LIST_VIEW_TABLE + " (" 
       + ListViewMetaData.ID+ " integer primary key autoincrement, " 
       + ListViewMetaData.LIST_VIEW_HEADER_KEY + " text, " 
       + ListViewMetaData.LIST_VIEW_FOOTER_KEY + " text, " 
       + ListViewMetaData.LIST_VIEW_ACTIVITY_KEY + " text);"; 


private class DbHelper extends SQLiteOpenHelper { //classe che ci aiuta nella creazione del db 

     public DbHelper(Context context, String name, CursorFactory factory,int version) { 
       super(context, name, factory, version); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase _db) { //solo quando il db viene creato, creiamo la tabella 
      System.out.println("merda"); 
       _db.execSQL(LIST_VIEW_TABLE_CREATE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) { 
       //qui mettiamo eventuali modifiche al db, se nella nostra nuova versione della app, il db cambia numero di versione 

     } 

} 

これは私のコードです:

final ListView lV_new_miss = (ListView) findViewById(R.id.lV_new_miss); 

    //Apriamo il db creato tramite MissioniDb a cui passo il contesto della classe attuale ovvero Lista_Missioni 
    listdb=new ListViewDb(getApplicationContext()); 
    System.out.println("prima del open"); 
    //apriamo il db 
    listdb.open(); 
    System.out.println("WTF"); 
    //Chiamo la Query che in questo caso è un all 
    Cursor curs_list_view=listdb.fetchListViewByActivity("1"); 

    //Comincio a fare il management del cursore 
    startManagingCursor(curs_list_view); 

    //Semplice cursor adapter 
    adapter_list_view=new SimpleCursorAdapter(
        this, //Contesto 
        R.layout.row_new_miss, //il layout di ogni riga/prodotto 
        curs_list_view, //Il cursore 
        new String[]{ListViewDb.ListViewMetaData.LIST_VIEW_HEADER_KEY,ListViewDb.ListViewMetaData.LIST_VIEW_FOOTER_KEY},//questi colonne 
        new int[]{R.id.tV_header_miss,R.id.tV_footer_miss});//in queste views 


    lV_new_miss.setAdapter(adapter_list_view); 

    listdb.close(); 

これは私のログの猫です:

04-02 15:03:22.624: I/Database(390): sqlite returned: error code = 1, msg = near "View": syntax error 
04-02 15:03:22.624: E/Database(390): Failure 1 (near "View": syntax error) on 0x267938 when preparing 'CREATE TABLE IF NOT EXISTS list View (_id integer primary key autoincrement, header text, footer text, activity text);'. 
04-02 15:03:22.634: D/AndroidRuntime(390): Shutting down VM 
04-02 15:03:22.634: W/dalvikvm(390): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-02 15:03:22.644: E/AndroidRuntime(390): FATAL EXCEPTION: main 
04-02 15:03:22.644: E/AndroidRuntime(390): java.lang.RuntimeException: Unable to start activity ComponentInfo{spese.gestore.androidiani/spese.gestore.androidiani.Nuova_Missione}: android.database.sqlite.SQLiteException: near "View": syntax error: CREATE TABLE IF NOT EXISTS list View (_id integer primary key autoincrement, header text, footer text, activity text); 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.os.Looper.loop(Looper.java:123) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-02 15:03:22.644: E/AndroidRuntime(390): at java.lang.reflect.Method.invokeNative(Native Method) 
04-02 15:03:22.644: E/AndroidRuntime(390): at java.lang.reflect.Method.invoke(Method.java:521) 
04-02 15:03:22.644: E/AndroidRuntime(390): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-02 15:03:22.644: E/AndroidRuntime(390): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-02 15:03:22.644: E/AndroidRuntime(390): at dalvik.system.NativeStart.main(Native Method) 
04-02 15:03:22.644: E/AndroidRuntime(390): Caused by: android.database.sqlite.SQLiteException: near "View": syntax error: CREATE TABLE IF NOT EXISTS list View (_id integer primary key autoincrement, header text, footer text, activity text); 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727) 
04-02 15:03:22.644: E/AndroidRuntime(390): at spese.gestore.androidiani.ListViewDb$DbHelper.onCreate(ListViewDb.java:137) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106) 
04-02 15:03:22.644: E/AndroidRuntime(390): at spese.gestore.androidiani.ListViewDb.open(ListViewDb.java:39) 
04-02 15:03:22.644: E/AndroidRuntime(390): at spese.gestore.androidiani.Nuova_Missione.onCreate(Nuova_Missione.java:55) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-02 15:03:22.644: E/AndroidRuntime(390): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-02 15:03:22.644: E/AndroidRuntime(390): ... 11 more 
+0

'CREATE TABLE IF NOT EXISTSリストビュー(整数の主キーの自動インクリメント、ヘッダーテキスト、フッターテキスト、アクティビティテキスト)ビュー 'が存在しない場合は有効なSQLステートメントです(' list view'部分を見てください) – Selvin

答えて

3

static final String LIST_VIEW_TABLE = "list View"; 

を変更してみてください210

static final String LIST_VIEW_TABLE = "list_View"; 
関連する問題