加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

需要帮助从SQLite数据库中读取Android版

发布时间:2020-12-12 18:53:28 所属栏目:百科 来源:网络整理
导读:我已阅读了许多网站和教程,但无法解决我的问题.我有一个应用程序,直到我尝试从我的数据库读取它(它打开它就好了).我知道它不是正确的做事方式,但我有两个全局字符串,我从主活动传递到我的DataBaseHelper类(DB_TABLE和spinnerPipeLengthText).当我调用以下代
我已阅读了许多网站和教程,但无法解决我的问题.我有一个应用程序,直到我尝试从我的数据库读取它(它打开它就好了).我知道它不是正确的做事方式,但我有两个全局字符串,我从主活动传递到我的DataBaseHelper类(DB_TABLE和spinnerPipeLengthText).当我调用以下代码行来检索特定行中所有列的数据时,我的应用程序崩溃了.

Cursor cursorData = myDataBase.query(CSSTPipeSizingActivity.DB_TABLE,null,CSSTPipeSizingActivity.spinnerPipeLengthText,null);

这是我的完整getData方法:

public Cursor getData() {

    Cursor cursorData = myDataBase.query(CSSTPipeSizingActivity.DB_TABLE,null);
    if (cursorData != null)
        cursorData.moveToFirst();

    cursorData.moveToFirst();
    CSSTPipeSizingActivity.textViewSize15.setText(cursorData.getString(1));
    cursorData.moveToNext();        
    CSSTPipeSizingActivity.textViewSize19.setText(cursorData.getString(1));
    cursorData.moveToFirst();
    CSSTPipeSizingActivity.textViewSize25.setText(cursorData.getString(1));
    cursorData.moveToNext();        
    CSSTPipeSizingActivity.textViewSize31.setText(cursorData.getString(1));
    cursorData.moveToFirst();
    CSSTPipeSizingActivity.textViewSize37.setText(cursorData.getString(1));
    cursorData.moveToNext();        
    CSSTPipeSizingActivity.textViewSize46.setText(cursorData.getString(1));
    cursorData.moveToNext();        
    CSSTPipeSizingActivity.textViewSize62.setText(cursorData.getString(1));

    cursorData.close();
    return cursorData;
} // end method getData

从我的代码中可以看出,我正在尝试获取数据并将其直接输入到main.xml文件中的文本视图中.我不知道这是否可能,但这将是我稍后想出来的.现在我需要获取数据.

这是我的logcat:

03-12 19:23:33.587: D/AndroidRuntime(20191): Shutting down VM
03-12 19:23:33.587: W/dalvikvm(20191): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-12 19:23:33.617: E/AndroidRuntime(20191): FATAL EXCEPTION: main
03-12 19:23:33.617: E/AndroidRuntime(20191): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skyesmechanical.CSSTPipeSizing/com.skyesmechanical.CSSTPipeSizing.CSSTPipeSizingActivity}: java.lang.NullPointerException
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.os.Looper.loop(Looper.java:123)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread.main(ActivityThread.java:3683)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at java.lang.reflect.Method.invokeNative(Native Method)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at java.lang.reflect.Method.invoke(Method.java:507)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at dalvik.system.NativeStart.main(Native Method)
03-12 19:23:33.617: E/AndroidRuntime(20191): Caused by: java.lang.NullPointerException
03-12 19:23:33.617: E/AndroidRuntime(20191):    at com.skyesmechanical.CSSTPipeSizing.DataBaseHelper.getData(DataBaseHelper.java:173)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at com.skyesmechanical.CSSTPipeSizing.CSSTPipeSizingActivity.onCreate(CSSTPipeSizingActivity.java:105)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-12 19:23:33.617: E/AndroidRuntime(20191):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-12 19:23:33.617: E/AndroidRuntime(20191):    ... 11 more

谢谢你的帮助!

解决方法

好吧,你正在关闭光标,然后试图返回它……不会那样工作得那么好.关闭光标并返回任何内容或返回光标.

当你执行movetofirst,movetonext,然后再次移动时,你还会继续迭代前几个条目.

我也相信你的getString需要一些帮助.

这是我如何去做的:

titleTxt.setText(eventedit.getString(eventedit
    .getColumnIndexOrThrow(AttendanceDB.EVENT_NAME)));

titleTxt是我之前设置的TextView参考.
eventEdit是我想要从中获取信息的光标(并在之前创建)
AttendanceDB是我的数据库适配器类
EVENT_NAME是我在数据库适配器类中设置的列名变量

编辑

好的,现在我重新阅读了你的问题,我意识到我正在回答错误的部分.问题是你的查询搞砸了.我认为应该更像这样:

Cursor cursorData = myDataBase.query(CSSTPipeSizingActivity.DB_TABLE,COLUMN_ID + "=" + CSSTPipeSizingActivity.spinnerPipeLengthText,null);

您需要告诉查询要搜索所需信息的列(CSSTPipeSizingActivity.spinnerPipeLengthText).因此,将COLUMN_ID替换为您的列名或变量,您应该好好去.

你真的应该查看信息here,特别是各种查询方法及其所需的参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读