2016-09-24 71 views
0

****異常1 ****SQLite的在機器人工作室插入值時沒有這樣的table.Two例外一個

E/SQLiteLog: (1) no such table: student_table 
E/SQLiteDatabase: Error inserting NAME=yu DESIGNATION=hg SALARY=hgf 
android.database.sqlite.SQLiteException: no such table: student_table 
(code 1): , while compiling: INSERT INTO student_table(NAME,DESIGNATION,SALARY) VALUES (?,?,?) 
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 
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.admin.databaseapps.Databasehelp.Insertdata(Databasehelp.java:49) 
at com.example.admin.databaseapps.MainActivity$2.onClick(MainActivity.java:140) 
         at android.view.View.performClick(View.java:5198) 
         at android.view.View$PerformClick.run(View.java:21147) 
         at android.os.Handler.handleCallback(Handler.java:739) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:148) 
       at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
V/RenderScript: 0xad9dc000 Launching thread(s), CPUs 2 
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa29c7af0 
E/SQLiteLog: (1) no such table: student_table 
D/AndroidRuntime: Shutting down VM 

例外2

--------- beginning of crash 

    E/AndroidRuntime: FATAL EXCEPTION: main  
         Process: com.example.admin.databaseapps, PID: 2454 
         android.database.sqlite.SQLiteException: no such table: student_table (code 1): , while compiling: select * from student_table 
          at 
    android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 
    Method) 
at 
android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
at android.database.sqlite.SQLiteProgram.<init> 
(SQLiteProgram.java:58) at android.database.sqlite.SQLiteQuery.<init> 
(SQLiteQuery.java:37) at 
    android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255) 
at com.example.admin.databaseapps.Databasehelp.getAlldata(Databasehelp.java:60) 
at com.example.admin.databaseapps.MainActivity$1.onClick(MainActivity.java:76) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

源代碼得到錯誤:

public class Databasehelp extends SQLiteOpenHelper { 

    public static final String Database_w = "Employ.db"; 

    public static final String Table_name = "student_table"; 

    public static final String col1 = "_ID"; 

    public static final String col2 = "NAME"; 

    public static final String col3 = "DESIGNATION"; 

    public static final String col4 = "SALARY"; 

    public static int database_version = 1; 


    public Databasehelp(Context context) { 

     super(context, Database_w, null, database_version); 

    } 

    @Override 

    public void onCreate(SQLiteDatabase sqLiteDatabase) { 

     sqLiteDatabase.execSQL("CREATE TABLE " + Table_name + " (_ID INTEGER 

PRIMARY KEY AUTOINCREMENT,NAME TEXT,DESIGNATION TEXT,SALARY INTEGER)"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 

     sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + Table_name); 


     onCreate(sqLiteDatabase); 

    } 

    public boolean Insertdata(String name, String Desig, String Sal) { 

     SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 

     ContentValues contentValues = new ContentValues(); 


    contentValues.put(col2, name); 

     contentValues.put(col3, Desig); 

     contentValues.put(col4, Sal); 

     long result = sqLiteDatabase.insert(Table_name, null, contentValues); 

     if (result == -1) 

      return false; 

     else 

      return true; 


    } 

    public Cursor getAlldata() { 


SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 



     Cursor res = sqLiteDatabase.rawQuery("select * from "+Table_name,null); 


     return res; 
    } 
} 
+0

請檢查您的onCreateDb是否正常運行?由於日誌說沒有這樣的表student_table – nikka

+0

請格式化您的代碼很好。 –

回答

0

我不知道如何您實例化Databasehelp,但只是爲了確保,請確認你做這種方式:

Databasehelp db = new Databasehelp(context); 
    db.Insertdata(...); 

如果這不是問題,然後檢查什麼妮卡在評論中寫道你。調試的一個好方法是儘可能多地進行調試;它會告訴你你錯在哪裏。

此外,檢查此擴展名: http://facebook.github.io/stetho/

它可以讓你使用瀏覽器來查看數據庫的結構,這樣可以確保您的表創建的;您還可以在那裏測試您的查詢並檢查可能的拼寫錯誤等。