ошибка при подсчете номера конкретной записи в базе данных - PullRequest
1 голос
/ 22 сентября 2019

как мне создать запрос, который подсчитывает номер определенной записи в базе данных.Я попробовал этот код:

 public int getContactsCount(String name) {
        String countQuery = "SELECT count(*) FROM database_names where _name ="+name;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        return cursor.getCount();


    }

, но он не работал.там написано:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 26655
    android.database.sqlite.SQLiteException: incomplete input (Sqlite code 1 SQLITE_ERROR): , while compiling: SELECT count(*) FROM database_names where _name =, (OS error - 2:No such file or directory)
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:948)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:559)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63)
        at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
        at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
        at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1493)
        at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1427)
        at com.example.myapplication.database_names.getContactsCount(database_names.java:68)
        at com.example.myapplication.HazineHaActivity$1.onClick(HazineHaActivity.java:62)
        at android.view.View.performClick(View.java:6663)
        at android.view.View.performClickInternal(View.java:6635)
        at android.view.View.access$3100(View.java:794)
        at android.view.View$PerformClick.run(View.java:26199)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019
select  COUNT(id) as count from tblstudent where name='test'
0 голосов
/ 22 сентября 2019

Возможно, ваша проблема в том, что вы не заключаете параметр name в одинарные кавычки.Но правильный способ сделать это - использовать заполнитель в вашем запросе и передать name в качестве параметра:

Cursor c = db.rawQuery(
  "SELECT COUNT(*) AS counter FROM MY TABLE WHERE _NAME = ?", 
  new String[] {name}
);

Заменить db на ваш объект SQLiteOpenHelper.

...