커서로 쿼리를 수행하는 동안 IllegalArgumentException이 발생했습니다.

droidX

My Query is about cursors. 다음 코드를 실행하면 프로그램에서 NUllPointerException이 발생합니다.

public class MySQLiteHelper extends SQLiteOpenHelper {

  public MySQLiteHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub
  }

  public static final String DATABASE_NAME = "Exp.db";
  public static final int DATABASE_VERSION = 1;
  private static final String KEY_ID = "ROW_ID";
  private static final String KEY_DESCRIP = "ITEM_DESCRIPTION";
  private static final String KEY_AMOUNT = "ITEM_AMOUNT";
  private static final String KEY_TABLE_NAME = "ITEMS";

  @Override
  public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("create table ITEMS(ROW_ID integer primary key autoincrement,ITEM_DESCRIPTION text,ITEM_AMOUNT text);");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    // TODO Auto-generated method stub

    db.execSQL("DROP TABLE IF EXISTS ITEMS");
    this.onCreate(db);
  }

  public void createEntry(ExpenseObject exp) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(KEY_AMOUNT, exp.Amt);
    cv.put(KEY_DESCRIP, exp.Desc);
    db.insert(KEY_TABLE_NAME, null, cv);
    db.close();
  }

  public String getAllEntry() {
    SQLiteDatabase db = this.getReadableDatabase();
    String[] columns=new String[]{KEY_ID,KEY_DESCRIP,KEY_AMOUNT};
    Cursor cx=db.query(KEY_TABLE_NAME, columns, null, null, null, null, null);
        String result=" ";
        int rowid=cx.getColumnIndex(KEY_ID);
        int amt=cx.getColumnIndex(KEY_AMOUNT);
        int desc=cx.getColumnIndex(KEY_DESCRIP);
        for(cx.moveToFirst();!cx.isAfterLast();cx.moveToNext())
        {
          result= result + " " + cx.getString(rowid) + " " +cx.getString(desc) + "  " + cx.getString(amt) + " \n " ;
        }
        cx.close();

       return result;

  }

logcat 파일은 다음과 같습니다.

D/dalvikvm(4318): GC_FOR_ALLOC freed 77K, 6% free 2943K/3120K, paused 57ms, total 67ms
D/AndroidRuntime(4318): Shutting down VM
W/dalvikvm(4318): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
E/AndroidRuntime(4318): FATAL EXCEPTION: main
E/AndroidRuntime(4318): java.lang.NullPointerException
E/AndroidRuntime(4318): at com.example.expensesdatabase.MainActivity.onClick(MainActivity.java:61)
E/AndroidRuntime(4318):at android.view.View.performClick(View.java:4240)
E/AndroidRuntime(4318):at android.view.View$PerformClick.run(View.java:17721)
E/AndroidRuntime(4318):at android.os.Handler.handleCallback(Handler.java:730)
E/AndroidRuntime(4318):at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(4318):at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(4318):at android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime(4318):at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(4318):at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime(4318):at com.an>droid.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:737)
E/AndroidRuntime(4318):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(4318):at dalvik.system.NativeStart.main(Native Method)

주요 활동 파일은 다음과 같습니다.

public class MainActivity extends Activity implements View.OnClickListener {
  EditText desc,amt,r;
  Button enter,bview;
  TextView s1,i1,a1;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    desc=(EditText) findViewById(R.id.eDesc);
    amt=(EditText) findViewById(R.id.eAmt);
    enter=(Button) findViewById(R.id.bEnter);
    bview=(Button) findViewById(R.id.bview);
    s1=(TextView) findViewById(R.id.tvid1);
    a1=(TextView) findViewById(R.id.tvamt1);
    i1=(TextView) findViewById(R.id.tvitem1);
    r=(EditText) findViewById(R.id.editText1);
    enter.setOnClickListener(this);
    bview.setOnClickListener(this);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

  @Override
  public void onClick(View v) {
    ExpenseObject e ;
    MySQLiteHelper h=new MySQLiteHelper(this);
    switch(v.getId()){
    case R.id.bEnter:
      String d=desc.getText().toString();
      String ab=amt.getText().toString();

      e =new ExpenseObject(d,ab);   
      h.createEntry(e);
      Dialog x=new Dialog(this);
      x.setTitle("Success");
      TextView tv= new TextView(this);
      tv.setText("Entry created");
      x.setContentView(tv);
      x.setCancelable(true);
      x.show();
      break;

    case R.id.bview:
      setContentView(R.layout.view_database);
          String result=h.getAllEntry();
          r.setText(result);

    break;  


    }
  }

}

또한 SQLdatabaseViewer를 사용하여 데이터베이스를 확인하여 데이터가 제대로 입력되었는지 확인했습니다. 그리고 내가 입력 한 정확한 항목을 보여주었습니다. 왜 여전히 nullPointer 예외가 발생하는지 모르겠습니다. 이 오류가 발생하는 이유와 해결 방법을 알려주세요. 감사합니다.

웨이브

여기에서:

ContentValues cv = new ContentValues();
cv.put(KEY_AMOUNT, exp.Amt);
cv.put(KEY_DESCRIP, exp.Desc);
db.insert(KEY_TABLE_NAME, null, cv);

exp.Descnull 일 수 있으며 바인딩 할 수 없습니다. 바인딩 인수 인덱싱은 1에서 시작하므로 인덱스 2의 바인딩 문제는 두 번째 바인딩 인수를 참조합니다.

또한 여기에서 커서에는 두 개의 열이 있습니다.

private static final String[] columns = { KEY_DESCRIP, KEY_AMOUNT };
Cursor cx = db.query(KEY_TABLE_NAME, columns, null, null, null, null, null);

하지만 세 가지를 요청합니다.

int rowid=cx.getColumnIndex(KEY_ID);
int amt=cx.getColumnIndex(KEY_AMOUNT);
int desc=cx.getColumnIndex(KEY_DESCRIP);

열 인덱스 -1을 사용하려고 할 때 결국 다른 예외가 발생합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mysql 드라이버를 사용하여 golang의 매개 변수로 쿼리를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

plpgsql var를 커서 문에서 쿼리와 연결하는 동안 오류가 발생했습니다.

분류에서Dev

이미지를로드하는 동안 오류가 발생했습니다.

분류에서Dev

개체를 MapEntry로 캐스팅하는 동안 ClassCastException이 발생했습니다.

분류에서Dev

Thread에서 MessageBox를 시작하는 동안 충돌이 발생했습니다.

분류에서Dev

서비스를 시작하는 동안 ActivityNotFoundException이 발생했습니다.

분류에서Dev

커스텀 동적 라이브러리 Rust를 연결하는 동안 오류가 발생했습니다.

분류에서Dev

Firebase 알림에서 아이콘 및 소리를 수신하는 동안 오류가 발생했습니다.

분류에서Dev

Superset을 사용하여 Impala에서 쿼리를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

bash에서 변수를 배열 길이로 설정하는 동안 오류가 발생했습니다.

분류에서Dev

C #에서 SQL Server에 대한 삽입 쿼리를 실행하는 동안 예외가 발생했습니다.

분류에서Dev

OrientDB에서 gremlin 쿼리를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

CodeIgniter에서 외부 라이브러리 Gantii를로드하는 동안 오류가 발생했습니다.

분류에서Dev

CodeIgniter에서 외부 라이브러리 Gantii를로드하는 동안 오류가 발생했습니다.

분류에서Dev

sudo에서 공유 라이브러리를로드하는 동안 오류가 발생했습니다.

분류에서Dev

Tableviewer에서 Commbobox를 만드는 동안 AssertionFailedException이 발생했습니다.

분류에서Dev

jquery에서 이미지로드를 기다리는 동안 오류가 발생했습니다.

분류에서Dev

쿼리에서 데이터 형식 nvarchar를 숫자로 변환하는 동안 오류가 발생했습니다.

분류에서Dev

Python에서 코드를 실행하는 동안이 NOT ADirectory 오류가 발생했습니다.

분류에서Dev

Mac의 Xcode에서 iOS 시뮬레이터를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

Android Studio에서 에뮬레이터를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

프로그램에서 라이브러리를 가져 오는 동안 오류가 발생했습니다.

분류에서Dev

ChooserIntent를 사용하여 OneDrive에서 파일을 다운로드하는 동안 FileUriExposedException이 발생했습니다.

분류에서Dev

PlacePicker를 호출하는 동안 NullPointerException이 발생했습니다.

분류에서Dev

firebase firestore에서 쿼리하는 동안 오류가 발생했습니다.

분류에서Dev

쿼리를 실행하는 동안 예외가 발생했습니다. Symfony 2.3에서 열을 찾을 수 없습니다.

분류에서Dev

트리 구조에서 노드를 병합하는 동안 java.util.ConcurrentModificationException이 발생했습니다.

분류에서Dev

Azure API 관리 서비스의 위치를 업데이트하는 동안 오류가 발생했습니다.

분류에서Dev

데이터베이스에서 이미지를로드하는 동안 오류가 발생했습니다.

Related 관련 기사

  1. 1

    mysql 드라이버를 사용하여 golang의 매개 변수로 쿼리를 실행하는 동안 오류가 발생했습니다.

  2. 2

    plpgsql var를 커서 문에서 쿼리와 연결하는 동안 오류가 발생했습니다.

  3. 3

    이미지를로드하는 동안 오류가 발생했습니다.

  4. 4

    개체를 MapEntry로 캐스팅하는 동안 ClassCastException이 발생했습니다.

  5. 5

    Thread에서 MessageBox를 시작하는 동안 충돌이 발생했습니다.

  6. 6

    서비스를 시작하는 동안 ActivityNotFoundException이 발생했습니다.

  7. 7

    커스텀 동적 라이브러리 Rust를 연결하는 동안 오류가 발생했습니다.

  8. 8

    Firebase 알림에서 아이콘 및 소리를 수신하는 동안 오류가 발생했습니다.

  9. 9

    Superset을 사용하여 Impala에서 쿼리를 실행하는 동안 오류가 발생했습니다.

  10. 10

    bash에서 변수를 배열 길이로 설정하는 동안 오류가 발생했습니다.

  11. 11

    C #에서 SQL Server에 대한 삽입 쿼리를 실행하는 동안 예외가 발생했습니다.

  12. 12

    OrientDB에서 gremlin 쿼리를 실행하는 동안 오류가 발생했습니다.

  13. 13

    CodeIgniter에서 외부 라이브러리 Gantii를로드하는 동안 오류가 발생했습니다.

  14. 14

    CodeIgniter에서 외부 라이브러리 Gantii를로드하는 동안 오류가 발생했습니다.

  15. 15

    sudo에서 공유 라이브러리를로드하는 동안 오류가 발생했습니다.

  16. 16

    Tableviewer에서 Commbobox를 만드는 동안 AssertionFailedException이 발생했습니다.

  17. 17

    jquery에서 이미지로드를 기다리는 동안 오류가 발생했습니다.

  18. 18

    쿼리에서 데이터 형식 nvarchar를 숫자로 변환하는 동안 오류가 발생했습니다.

  19. 19

    Python에서 코드를 실행하는 동안이 NOT ADirectory 오류가 발생했습니다.

  20. 20

    Mac의 Xcode에서 iOS 시뮬레이터를 실행하는 동안 오류가 발생했습니다.

  21. 21

    Android Studio에서 에뮬레이터를 실행하는 동안 오류가 발생했습니다.

  22. 22

    프로그램에서 라이브러리를 가져 오는 동안 오류가 발생했습니다.

  23. 23

    ChooserIntent를 사용하여 OneDrive에서 파일을 다운로드하는 동안 FileUriExposedException이 발생했습니다.

  24. 24

    PlacePicker를 호출하는 동안 NullPointerException이 발생했습니다.

  25. 25

    firebase firestore에서 쿼리하는 동안 오류가 발생했습니다.

  26. 26

    쿼리를 실행하는 동안 예외가 발생했습니다. Symfony 2.3에서 열을 찾을 수 없습니다.

  27. 27

    트리 구조에서 노드를 병합하는 동안 java.util.ConcurrentModificationException이 발생했습니다.

  28. 28

    Azure API 관리 서비스의 위치를 업데이트하는 동안 오류가 발생했습니다.

  29. 29

    데이터베이스에서 이미지를로드하는 동안 오류가 발생했습니다.

뜨겁다태그

보관