gpt4 book ai didi

android - 如何在 Android 中编写 SQL 查询?

转载 作者:行者123 更新时间:2023-11-29 12:23:18 25 4
gpt4 key购买 nike

请告诉我这是正确的查询方式。我想获取一行的所有值来编辑页面。我应该在下面的查询中进行哪些更改?欢迎所有建议。

db = helper.getReadableDatabase();
Cursor cursor = db.query(SQLiteHelper.TABLE_NAME, new String[] {SQLiteHelper.UID,
SQLiteHelper.TASK_NAME , SQLiteHelper.CONTACTS, SQLiteHelper.DESCRIPTION, SQLiteHelper.REMARKS, SQLiteHelper.DATETIME, SQLiteHelper.ESTIMATED_COMPLETION_TIME,
SQLiteHelper.ACTUAL_COMPLETION_TIME, SQLiteHelper.NOTIFY_TIME}, SQLiteHelper.UID + "=?",
new String[] {String.valueOf(id)}, null, null, null, null);

我正在获取空游标的值。这是由于错误的查询还是其他原因造成的?

光标操作方法:

public Task getTask(String id) {

db = helper.getReadableDatabase();
Cursor cursor = db.query(SQLiteHelper.TABLE_NAME, new String[] {SQLiteHelper.UID,
SQLiteHelper.TASK_NAME , SQLiteHelper.CONTACTS, SQLiteHelper.DESCRIPTION, SQLiteHelper.REMARKS, SQLiteHelper.DATETIME, SQLiteHelper.ESTIMATED_COMPLETION_TIME,
SQLiteHelper.ACTUAL_COMPLETION_TIME, SQLiteHelper.NOTIFY_TIME}, SQLiteHelper.UID + " LIKE ?",
new String[] {String.valueOf(id)}, null, null, null);





if (cursor != null );
cursor.moveToFirst();


task = new Task(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5),
cursor.getString(6), cursor.getString(7), cursor.getString(8));

Log.d("Pana" , "The value of Task is" + task);



db.close();
// return user
return task;

}

日志猫:

02-25 15:31:12.343    1317-1317/com.ms.t.tms E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.ms.t.tms, PID: 1317
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ms.t.tms/com.ms.t.tms.EditScreen}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at com.ms.t.tms.SQLiteDataBaseAdapter.getTask(SQLiteDataBaseAdapter.java:120)
at com.ms.t.tms.EditScreen.onCreate(EditScreen.java:36)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

最佳答案

检查cursor.moveToFirst()返回true或false,然后只获取值:例如

if (cursor != null ){
if( cursor.moveToFirst()){
task = new Task(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5),
cursor.getString(6), cursor.getString(7), cursor.getString(8));

Log.d("Pana" , "The value of Task is" + task);
}
}

关于android - 如何在 Android 中编写 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com