2013-05-18 4 views
0

При запуске моего приложения с использованием Sqlite я получаю следующую ошибку.Ошибка в базе данных Sqlite

SQLiteLog(779): (1) near "SQXC31DLT": syntax error 
System.out(779): DATABASE ERROR android.database.sqlite.SQLiteException: near "SQXC31DLT": syntax error (code 1): , while compiling: SELECT count(*) FROM MessageTable WHERE userID =? SQXC31DLT 

Код:

Вот мой запрос

String query = "INSERT INTO MessageTable (user_message_id,message,title,message_time,mp3,userID) values ('" + 

       umsermessgid + "','" + Messages +"','" + Title +"','" + timedate+ "','" + musicmp3 + "','" + userid + "')"; 


        sqlHandler.executeQuery(query); 
         showList(); 

Вот метод остальные showlist():

private void showList() { 
      // TODO Auto-generated method stub 
      contactList = new ArrayList<ContactListItems>(); 
      contactList.clear(); 
      userid= mDataStorage.getToken(FirstActivity.this); 

String query = "SELECT count(*) FROM MessageTable WHERE userID = '" + userid +"'";    Cursor c1 = sqlHandler.selectQuery(query); 
       if (c1 != null && c1.getCount() != 0) { 
       if (c1.moveToFirst()) { 
       // do { 
       ContactListItems contactListItems = new ContactListItems(); 

       contactListItems.setSlno(c1.getString(c1.getColumnIndex("ID"))); 
       contactListItems.setmessage(c1.getString(c1.getColumnIndex("message"))); 
       contactListItems.settitle(c1.getString(c1.getColumnIndex("title"))); 
       contactListItems.setmp3(c1.getString(c1.getColumnIndex("mp3"))); 
       contactListItems.setusermessageid(c1.getString(c1.getColumnIndex("user_message_id"))); 
       contactList.add(contactListItems); 

       // } while (c1.moveToNext()); 
       } 
       } 
       c1.close(); 


     } 

Я проверил все, но до сих пор я получаю сообщение об ошибке

CursorWindow(1211): Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 1 columns. 



    05-18 10:37:11.022: E/AndroidRuntime(1211): FATAL EXCEPTION: main 
05-18 10:37:11.022: E/AndroidRuntime(1211): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.database.CursorWindow.nativeGetString(Native Method) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.database.CursorWindow.getString(CursorWindow.java:434) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.example.universal.FirstActivity.showList(FirstActivity.java:330) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.example.universal.FirstActivity.access$1(FirstActivity.java:317) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.example.universal.FirstActivity$GetTask.onPostExecute(FirstActivity.java:137) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.example.universal.FirstActivity$GetTask.onPostExecute(FirstActivity.java:1) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.os.AsyncTask.finish(AsyncTask.java:631) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.os.Looper.loop(Looper.java:137) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-18 10:37:11.022: E/AndroidRuntime(1211):  at dalvik.system.NativeStart.main(Native Method) 

Может кто-нибудь помочь мне решить эту проблему !! @ Спасибо

+0

пожалуйста пост весь ваш logcat –

+0

you shou ld использовать символ **? ** только для форматирования запросов с параметром 'selectionArgs'. – user2340612

+0

@MehulJoisar Я добавил –

ответ

1

Ваш запрос неверен.

использование:

String query = "SELECT count(*) FROM MessageTable WHERE userID =" + userid ; 

в вашей showList функция

().

+0

Произошла одна и та же ошибка –

+0

изменить на: String query =" SELECT count (*) FROM MessageTable WHERE userID = '"+ userid +"' "; и см. –

+0

, а затем я получаю ошибку CursorWindow (1211): Не удалось прочитать строку 0, столбец -1 из CursorWindow, который имеет 1 строку, 1 столбец. –

0

Измените запрос как следующий

String query = "SELECT count(*) FROM MessageTable WHERE userID = '" + userid +"'"; 

Или попробуйте, как в следующем.

Cursor c = db.rawQuery("SELECT count(*) FROM MessageTable where userID = '"+ userid + "'", null); 
+0

с помощью вашего кода я получаю эту ошибку 05-18 10: 37: 10.992: E/CursorWindow (1211): Не удалось прочитать строку 0, столбец - 1 из CursorWindow, который имеет 1 строку, 1 столбец. –

+0

userid id VARCHAR –

+0

yes..let me try –

0

Что вы пытаетесь сделать с кодом?

Этот SQL-запрос должен быть правильный запрос для первой задачи:

String query = "SELECT count(*) FROM MessageTable WHERE userID = '" + userid +"'"; (by Gunaseelan)

Эта ошибка:

Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 1 columns.

потому, что вы используете ложный запрос. Запрос, который вы используете, возвращает только число - счет. (Один столбец и одна строка)

Правильный запрос для этого кода:

Cursor c1 = sqlHandler.selectQuery(query); if (c1 != null && c1.getCount() != 0) { if (c1.moveToFirst()) { // do { ContactListItems contactListItems = new ContactListItems();

   contactListItems.setSlno(c1.getString(c1.getColumnIndex("ID"))); 
      contactListItems.setmessage(c1.getString(c1.getColumnIndex("message"))); 
      contactListItems.settitle(c1.getString(c1.getColumnIndex("title"))); 
      contactListItems.setmp3(c1.getString(c1.getColumnIndex("mp3"))); 
      contactListItems.setusermessageid(c1.getString(c1.getColumnIndex("user_message_id"))); 
      contactList.add(contactListItems); 

      // } while (c1.moveToNext()); 
      } 
      } 
      c1.close(); 

должно быть:

String query = "SELECT * FROM MessageTable WHERE userID = '" + userid +"'";

и нет:

String query = "SELECT count(*) FROM MessageTable WHERE userID = '" + userid +"'";

Смежные вопросы