SQLite连接类中的函数导致运行时异常

时间:2017-12-02 05:34:20

标签: android sqlite

我有DataBase Table我有COULMNS KEY_ID(INT)EMAIL(TEXT)PASSWORD(TEXT)FIRST_NAME(TEXT)LAST_NAME(TEXT)

我在 SqliteConnection类中有一个函数:

public String Well(String el,String pl)
{
    SQLiteDatabase pox =this.getReadableDatabase();
    String qr="SELECT "+FIRST_NAME+" FROM "+TABLE_NAME+" WHERE "+EMAIL+" = "+el+" AND "+PASSWORD+" = "+pl;
    Cursor cur =pox.rawQuery(qr,null);
    String itemname =  cur.getString(cur.getColumnIndex(FIRST_NAME));
    pox.close();
    cur.close();
    return  itemname;

}

在上述功能中,我正在传递EMAIL as e1PASSWORD as p1并尝试抓取与FIRST_NAME匹配的EMAIL and PASSWORD.用户 当我在任何其他活动中调用此函数而不是导致java.lang.NullPointerException异常时。这个功能有什么问题。

logcat的

12-02 11:02:36.943 2368-2368/? W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/graphics/drawable/Icon;)
12-02 11:02:36.943 2368-2368/? I/dalvikvm: Could not find method android.widget.ImageView.setImageIcon, referenced from method android.support.v7.widget.AppCompatImageView.setImageIcon
12-02 11:02:36.943 2368-2368/? W/dalvikvm: VFY: unable to resolve virtual method 16525: Landroid/widget/ImageView;.setImageIcon (Landroid/graphics/drawable/Icon;)V
12-02 11:02:36.943 2368-2368/? D/dalvikvm: VFY: replacing opcode 0x6f at 0x0000
12-02 11:02:37.073 1559-1574/system_process W/ActivityManager: Launch timeout has expired, giving up wake lock!
12-02 11:02:38.343 1670-1681/com.android.inputmethod.latin W/Binder: Caught a RuntimeException from the binder stub implementation.
                                                                     java.lang.NullPointerException
                                                                         at android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280)
                                                                         at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129)
                                                                         at android.os.Binder.execTransact(Binder.java:404)
                                                                         at dalvik.system.NativeStart.run(Native Method)
12-02 11:02:38.343 1559-1713/system_process W/InputMethodManagerService: Got RemoteException sending setActive(false) notification to pid 2323 uid 10055
12-02 11:02:38.353 2368-2368/com.example.sony.sqloperations I/Choreographer: Skipped 83 frames!  The application may be doing too much work on its main thread.
12-02 11:02:40.533 1559-1573/system_process I/ActivityManager: Displayed com.example.sony.sqloperations/.MainActivity: +4s448ms (total +13s453ms)
12-02 11:03:00.013 1616-1616/com.android.systemui D/EGL_emulation: eglMakeCurrent: 0xb8f0e180: ver 2 0
12-02 11:03:00.093 1616-1616/com.android.systemui D/dalvikvm: GC_FOR_ALLOC freed 20284K, 67% free 10469K/30824K, paused 50ms, total 68ms

1 个答案:

答案 0 :(得分:0)

首先,在 SELECT 声明中使用 SINGLE 引用。

  "SELECT  _FIRST_NAME FROM " + TABLE_NAME +" WHERE FIELD_NAME='"_FIELD_VALUE "' AND FIELD_NAME_TWO='" _FIELD_VALUE_TWO  "'";

然后

 if (cursor.moveToFirst()) 
 {
     String itemname = cur.getString(0); // Or (cur.getColumnIndex(YOUR_FIELD_NAME));     
 }