2016-09-29 37 views
-2

我已经当我启动应用程序这个问题,这让我这个错误:DB:“表”已经没有列命名为“名栏”

E/SQLiteLog: (1) table geophysics_table has no column named municipality 
E/SQLiteDatabase: Error inserting id_grid=1 culture_type= resolution_survey= soil_type= coordinates= finish_date= start_date= municipality= site= software= range= ctr= assistans= frequency_feeler= igm= max_depth= instrument_type= area_investigated= description_site= n_tab= author= acquisition_method= survey_method= ref_geo_map= 
        android.database.sqlite.SQLiteException: table geophysics_table has no column named municipality (code 1): , while compiling: INSERT INTO geophysics_table(id_grid,culture_type,resolution_survey,soil_type,coordinates,finish_date,start_date,municipality,site,software,range,ctr,assistans,frequency_feeler,igm,max_depth,instrument_type,area_investigated,description_site,n_tab,author,acquisition_method,survey_method,ref_geo_map) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 
         at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
         at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
         at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
         at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
         at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
         at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
         at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 
         at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
         at com.example.giuse.secondly.DBTools.insertGrid(DBTools.java:85) 
         at com.example.giuse.secondly.NewSheet.saveData(NewSheet.java:104) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:372) 
         at android.view.View$1.onClick(View.java:4015) 
         at android.view.View.performClick(View.java:4780) 
         at android.view.View$PerformClick.run(View.java:19866) 
         at android.os.Handler.handleCallback(Handler.java:739) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:135) 
         at android.app.ActivityThread.main(ActivityThread.java:5254) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:372) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
W/EGL_emulation: eglSurfaceAttrib not implemented 
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7fa4f2464180, error=EGL_SUCCESS 

但我想我已经进入了“自治市“在每个部分。这是db的代码:

@Override 
public void onCreate(SQLiteDatabase database) { 

    String query = "CREATE TABLE geophysics_table (id_grid INTEGER PRIMARY KEY, site TEXT, " + 
      "n_tab TEXT, municipality TEXT, ctr TEXT, igm TEXT, coordinates TEXT, ref_geo_map TEXT, description_site TEXT, soil_type TEXT, culture_type TEXT, survey_method TEXT, instrument_type TEXT, resolution_survey TEXT, area_investigated TEXT, acquisition_method TEXT, frequency_feeler TEXT, range TEXT, max_depth TEXT, software TEXT, author TEXT, assistants TEXT, start_date TEXT, finish_date TEXT)"; 
+0

尝试创建一个新的数据库表。 –

+1

您最近是否在数据库中没有该列的情况下运行该应用程序,并且未能更改数据库版本以告诉应用程序重新创建表格? –

+0

在以前的应用程序运行之后,该列肯定已添加**。 –

回答

0

可能你必须增加你的数据库版本。

增加后,将调用onUpgrade方法。

因此,您可以在此放置所有表格并致电onCreate

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS firstTable"); 
    db.execSQL("DROP TABLE IF EXISTS secondTable"); 
    db.execSQL("DROP TABLE IF EXISTS thirdTable"); 
    onCreate(db); 
} 
相关问题