我要做的就是设置一个等于我数据库中的条目之一的字符串。我正在访问的表有 1 列(除了 ID 列)。我已经为此苦苦挣扎了一段时间,因此即使有人提出了类似的问题,我也无法使这种情况发挥作用。我对 SQLite 中的其他一些命令感到满意,但仍然是初学者。这就是我所拥有的。我很确定一旦这种方法有效,我从花药类的调用就会正常工作。
请注意,StringCategory_Table 和 COLUMN_CATEGORIES 都定义为字符串。
我的数据库是使用以下方法创建的(它适用于除以下方法之外的所有其他方法):
db.execSQL("CREATE TABLE " + StringCategory_Table + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_CATEGORIES + " TEXT NOT NULL);");
这是有问题的方法(使用 SQLite open helper 在数据库类中创建):
public String getCategory(int catId){
Cursor mycursor = myDatabase.rawQuery("SELECT " + COLUMN_CATEGORIES + " FROM "+ StringCategory_Table +" WHERE " + _ID + " = " + catId, null);
//i no longer use this line:String strCatName = mycursor.toString();
String strCatName = mycursor.getString(mycursor.getColumnIndex(COLUMN_CATEGORIES));
return strCatName;
}
这是我上面代码的logcat:
09-04 20:05:47.764: E/AndroidRuntime(9232): FATAL EXCEPTION: main
09-04 20:05:47.764: E/AndroidRuntime(9232): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mypackage.namespace/com.mypackage.namespace.MyCurrentRestaurants}: java.lang.NullPointerException
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.os.Looper.loop(Looper.java:137)
09-04 20:05:47.764: E/AndroidRuntime(9232): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-04 20:05:47.764: E/AndroidRuntime(9232): at java.lang.reflect.Method.invokeNative(Native Method)
09-04 20:05:47.764: E/AndroidRuntime(9232): at java.lang.reflect.Method.invoke(Method.java:511)
09-04 20:05:47.764: E/AndroidRuntime(9232): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-04 20:05:47.764: E/AndroidRuntime(9232): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
而不是删除这个问题,我将解释问题是什么(因为挖掘评论会很烦人):
- 我不能像以前那样将类字符串分配给 SQLite 条目。相反,我必须先打开数据库才能读取它: 因为我需要先打开数据库才能读取它,所以我需要创建 SQLite 数据库类的实例。
- 由于我使用的是游标,因此我需要使用 moveToFirst 方法才能正常工作。
感谢今天帮助过我的所有人,如果这些结论不正确,请告诉我,因为我不想将误解传播给像我一样困惑的人。亚当