檢查

2013-12-20 34 views
-3

我有這樣的代碼這是應該通過檢查其ISBN編號檢查

這是我Dbhelper類

public boolean isExist(String isbnNo) 
{ 
    SQLiteDatabase db; 
    db = this.getWritableDatabase(); 
    String query= "SELECT * FROM "+TABLE_NAME +"WHERE "+KEY_ISBN+"='"+isbnNo+"'";  

    Cursor cursor=db.rawQuery(query, null); 

    if(cursor.getCount()<1) // UserName Not Exist 
    { 
     cursor.close(); 
     return true; 
    } 
    else 
    { 
    cursor.close(); 
    return false; 
    }    
} 

的ISEXIST方法加入書之前,搜索,這是我的在我的外接活動類添加方法

private void saveData(){ 
    dataBase=mHelper.getWritableDatabase(); 
    ContentValues values=new ContentValues(); 
    DbHelper dbHelper = new DbHelper(getApplicationContext()); 
    values.put(DbHelper.KEY_NAME,name); 
    values.put(DbHelper.KEY_AUTHOR,author); 
    values.put(DbHelper.KEY_ISBN,isbn); 
    values.put(DbHelper.KEY_COPIES,copy); 
    values.put(DbHelper.KEY_INFO,info); 
    System.out.println(""); 
    if(isUpdate) 
    {  
     //update database with new data 
     dataBase.update(DbHelper.TABLE_NAME, values, DbHelper.KEY_ID+"="+id, null); 
    } 
    else 
    { 
     //insert data into database 
    if(!dbHelper.isExist(isbn)) 
      dataBase.insert(DbHelper.TABLE_NAME, null, values); 
    else 
     Toast.makeText(getApplicationContext(), "already exist", Toast.LENGTH_LONG).show(); 
    } 
    //close database 
    dataBase.close(); 
    finish(); 


} 

的onClick方法

public void onClick(View v) { 
    name=edit_name.getText().toString().trim(); 
    author=edit_author.getText().toString().trim(); 
    isbn=edit_isbn.getText().toString().trim(); 
    copy=edit_copy.getText().toString().trim(); 
    info=edit_info.getText().toString().trim(); 
    if(name.length()>0 && author.length()>0 && isbn.length()>0 && copy.length()>0 && info.length()>0) 
    { 
     saveData(); 
    } 
    else 
    { 
     AlertDialog.Builder alertBuilder=new AlertDialog.Builder(AdminAddBook.this); 
     alertBuilder.setTitle("Invalid Data"); 
     alertBuilder.setMessage("Please, Enter valid data"); 
     alertBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 

      } 
     }); 
     alertBuilder.create().show(); 
    } 

} 

  12-20 11:39:25.160: I/Choreographer(900): Skipped 151 frames! The application may be doing too much work on its main thread. 

      12-20 11:39:25.200: D/gralloc_goldfish(900): Emulator without GPU emulation detected. 

      12-20 11:39:25.640: I/Choreographer(900): Skipped 39 frames! The application may be doing too much work on its main thread. 

      12-20 11:39:36.770: D/dalvikvm(900): GC_FOR_ALLOC freed 126K, 7% free 3083K/3284K, paused 83ms, total 100ms 

      12-20 11:39:48.430: I/Choreographer(987): Skipped 44 frames! The application may be doing too much work on its main thread. 

      12-20 11:39:48.500: D/gralloc_goldfish(987): Emulator without GPU emulation detected. 

      12-20 08:40:02.735: D/dalvikvm(987): GC_FOR_ALLOC freed 123K, 7% free 3079K/3280K, paused 111ms, total 117ms 

      12-20 08:40:02.775: I/Choreographer(987): Skipped 43 frames! The application may be doing too much work on its main thread. 

      12-20 08:40:05.815: I/Choreographer(987): Skipped 49 frames! The application may be doing too much work on its main thread. 

      12-20 08:40:13.965: D/dalvikvm(987): GC_FOR_ALLOC freed 112K, 6% free 3243K/3432K, paused 87ms, total 130ms 

      12-20 08:40:14.305: I/Choreographer(987): Skipped 238 frames! The application may be doing too much work on its main thread. 

      12-20 08:40:14.565: I/Choreographer(987): Skipped 46 frames! The application may be doing too much work on its main thread. 

      12-20 08:40:25.535: I/Choreographer(987): Skipped 112 frames! The application may be doing too much work on its main thread. 

      12-20 08:40:32.085: D/dalvikvm(987): GC_FOR_ALLOC freed 97K, 5% free 3660K/3832K, paused 33ms, total 39ms 

      12-20 08:40:42.495: E/SQLiteLog(987): (1) near "=": syntax error 

      12-20 08:40:42.495: D/AndroidRuntime(987): Shutting down VM 

      12-20 08:40:42.505: W/dalvikvm(987): threadid=1: thread exiting with uncaught exception (group=0xb4a57b90) 

      12-20 08:40:42.525: E/AndroidRuntime(987): FATAL EXCEPTION: main 

      12-20 08:40:42.525: E/AndroidRuntime(987): Process: com.example.mobilib, PID: 987 

      12-20 08:40:42.525: E/AndroidRuntime(987): android.database.sqlite.SQLiteException: near "=": syntax error (code 1): , while compiling: SELECT * FROM BookWHERE isbn='123' 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at com.example.mobilib.DbHelper.isExist(DbHelper.java:37) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at com.example.mobilib.AdminAddBook.saveData(AdminAddBook.java:146) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at com.example.mobilib.AdminAddBook.onClick(AdminAddBook.java:106) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.view.View.performClick(View.java:4424) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.view.View$PerformClick.run(View.java:18383) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.os.Handler.handleCallback(Handler.java:733) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.os.Handler.dispatchMessage(Handler.java:95) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.os.Looper.loop(Looper.java:137) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at android.app.ActivityThread.main(ActivityThread.java:4998) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at java.lang.reflect.Method.invokeNative(Native Method) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at java.lang.reflect.Method.invoke(Method.java:515) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 

      12-20 08:40:42.525: E/AndroidRuntime(987): at dalvik.system.NativeStart.main(Native Method) 

的logcat的,我有是,當我點擊我的保存按鈕問題的應用程序會崩潰

有人能查一下嗎?

謝謝!

+0

CrashLog在哪裏? –

+0

發佈您的logcat ... – InnocentKiller

+0

發佈您的logcat與您的錯誤行。 – Piyush

回答

0

你需要在書本和sql字符串中的空白處留一個空白。

+0

這應該是評論! – Piyush

+0

rellyyy非常感謝你! –

0

嘗試這樣的:

您的查詢是有錯誤,如表名和沒有空間之間克勞斯。

public boolean isExist(String isbnNo) 
{ 
    SQLiteDatabase db; 
    db = this.getWritableDatabase(); 
    String query= "SELECT * FROM "+TABLE_NAME +" WHERE "+KEY_ISBN+"='"+isbnNo+"'";  

    Cursor cursor=db.rawQuery(query, null); 

    if(cursor.getCount()<1) // UserName Not Exist 
    { 
     cursor.close(); 
     return true; 
    } 
    else 
    { 
    cursor.close(); 
    return false; 
    }    
} 
+0

它工作!謝謝你哦! –

+0

您的歡迎兄弟 – Nagaraja