2016-09-24 70 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/

它可以让你使用浏览器来查看数据库的结构,这样可以确保您的表创建的;您还可以在那里测试您的查询并检查可能的拼写错误等。