這裏就是我想要做的SQLiteException:沒有這樣的列
如果「Gggfggvgvvvvvvvvvvv」一個人的類型或不管它的名字是不是在數據庫中,所以我試圖返回的消息沿着用戶「用戶名不存在」的行。
這是我的問題。當用戶點擊「getDetails」按鈕時,我收到一條令人討厭的錯誤消息(下面的錯誤消息)。
這是我認爲會工作,但它不工作。由於getColumnIndex等於-1,如果列不存在我想我會比較index1到-1。如果這種比較是真的,我會向我的用戶敬酒一條消息,但我收到一條錯誤消息。
我的問題是,我將如何解決這個問題?如何讓我的語法在沒有我的應用程序崩潰的情況下爲用戶提供一條消息Toast?
public void getDetails(View view){
String theName = name.getText().toString();
insertHelper.checkToSeeIfUserNameExist(theName);
}
public void checkToSeeIfUserNameExist(String theUserName){
SQLiteDatabase db = helper.getWritableDatabase();
String[] selectColoumnsFromDatabase = {
InsertDatabaseHelper.NAME
};
String selectionArgs= theUserName;
Cursor cursor = db.query(
InsertDatabaseHelper.TABLE_NAME,
selectColoumnsFromDatabase,
selectionArgs,
null, null, null, null
);
while(cursor.moveToNext()){
int index1 = cursor.getColumnIndex(InsertDatabaseHelper.NAME);
if(index1 == -1){
SQLMessage.message(helper.context, "Username Does Not Exist");
} else {
SQLMessage.message(helper.context, "Something Else Is Happening");
}
}
}
06-28 15:04:20.189: E/AndroidRuntime(2999): FATAL EXCEPTION: main
06-28 15:04:20.189: E/AndroidRuntime(2999): java.lang.IllegalStateException: Could not execute method of the activity
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.view.View$1.onClick(View.java:2144)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.view.View.performClick(View.java:2485)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.view.View$PerformClick.run(View.java:9081)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.os.Handler.handleCallback(Handler.java:587)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.os.Looper.loop(Looper.java:130)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-28 15:04:20.189: E/AndroidRuntime(2999): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 15:04:20.189: E/AndroidRuntime(2999): at java.lang.reflect.Method.invoke(Method.java:507)
06-28 15:04:20.189: E/AndroidRuntime(2999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
06-28 15:04:20.189: E/AndroidRuntime(2999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
06-28 15:04:20.189: E/AndroidRuntime(2999): at dalvik.system.NativeStart.main(Native Method)
06-28 15:04:20.189: E/AndroidRuntime(2999): Caused by: java.lang.reflect.InvocationTargetException
06-28 15:04:20.189: E/AndroidRuntime(2999): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 15:04:20.189: E/AndroidRuntime(2999): at java.lang.reflect.Method.invoke(Method.java:507)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.view.View$1.onClick(View.java:2139)
06-28 15:04:20.189: E/AndroidRuntime(2999): ... 11 more
06-28 15:04:20.189: E/AndroidRuntime(2999): Caused by: android.database.sqlite.SQLiteException: no such column: Gggfggvgvvvvvvvvvvv: , while compiling: SELECT Name FROM SHANETABLE WHERE Gggfggvgvvvvvvvvvvv
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189)
06-28 15:04:20.189: E/AndroidRuntime(2999): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271)
06-28 15:04:20.189: E/AndroidRuntime(2999): at com.example.multapps.InsertDatabaseAdapter.checkToSeeIfUserNameExist(InsertDatabaseAdapter.java:152)
06-28 15:04:20.189: E/AndroidRuntime(2999): at com.example.multapps.InsertIntoDatabase.getDetails(InsertIntoDatabase.java:61)
06-28 15:04:20.189: E/AndroidRuntime(2999): ... 14 more
謝謝,我的SQL語句不起作用。那是罪魁禍首。我感謝您的幫助 –