2014-01-29 2 views
1

안녕하세요 친구에서 작동하지 (('% Y- %의 m', tr_date는) 내가 지혜로운 내 applicaiton에 내 코드를 한달 데이터를 표시하는 wnat로의 strftime SQLite는 안드로이드

public class IncomeActivity extends ListActivity { 

Button mbutoonmonth; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_income); 
    DatabaseConnectionAPI mDatabaseConnectionAPI=new DatabaseConnectionAPI(getApplicationContext()); 
mTextViewMonth.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String StartDate=""; 


      int mYear = 0; 
      int mMonth; 
      int mDay; 
      int dayOFWeek = 0; 
      String mondayDate=""; 
      Calendar mCalendar = Calendar.getInstance(); 
      mCalendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 

      mCalendar.add(Calendar.DATE, 0); 

      mYear = mCalendar.get(Calendar.YEAR); 
      mMonth = mCalendar.get(Calendar.MONTH) + 1; 
      mDay = mCalendar.get(Calendar.DAY_OF_MONTH); 

      if (mMonth==10|mMonth==11|mMonth==12) { 
       StartDate=String.valueOf(mYear)+"-"+String.valueOf(mMonth); 
       System.out.println("Start DAte "+StartDate); 
      } 
      else { 
       StartDate=String.valueOf(mYear)+"-0"+String.valueOf(mMonth); 
       System.out.println("Start DAte "+StartDate); 
      } 

      mArrayListTransactions=mDatabaseConnectionAPI.getIncomeMonthData(mStringTrMode,StartDate); 
      mCustomListviewAdapter=new CustomListviewAdapter(IncomeActivity.this, mArrayListTransactions); 
      mListView.setAdapter(mCustomListviewAdapter); 
     } 
    }); 
    } 
} 

DatabaseConnectionAPI.java 아래

public ArrayList<ParsesrTransaction> getIncomeMonthData(String mode ,String date) { 

    ArrayList<ParsesrTransaction> mGetCategoryList = new ArrayList<ParsesrTransaction>(); 
    try { 
     String sqlQuery = "select tr_date from Transaction_Master where strftime('%Y-%m', tr_date) = "+ "'"+date+"'" ; 
     Cursor mCursorCategory = Query(sqlQuery); 
     if (mCursorCategory != null) { 
      mCursorCategory.moveToFirst(); 
      while (!mCursorCategory.isAfterLast()) { 

       ParsesrTransaction mParserCategory = new ParsesrTransaction(); 
       mParserCategory 
       .setCatID(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("cat_id"))); 
       mParserCategory 
       .setCatName(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("cat_name"))); 
       mParserCategory 
       .setTrDate(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("tr_date"))); 
       mParserCategory 
       .setTrDetail(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("tr_detail"))); 
       mParserCategory 
       .setTrMode(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("tr_mode"))); 
       mParserCategory 
       .setTrPrice(mCursorCategory.getString(mCursorCategory 
         .getColumnIndex("tr_price"))); 
       mGetCategoryList.add(mParserCategory); 
       mCursorCategory.moveToNext(); 
      } 
     } 
     mCursorCategory.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return mGetCategoryList; 
} 

내가 abouve 코드를 실행할 때처럼 나에게 메시지를 줄

01-29 14:27:11.890: E/CursorWindow(9965): Bad request for field slot 0,-1. numRows = 3, numColumns = 1 
01-29 14:27:11.890: W/System.err(9965): java.lang.IllegalStateException: get field slot from row 0 col -1 failed 
01-29 14:27:11.890: W/System.err(9965):  at android.database.CursorWindow.getString_native(Native Method) 
01-29 14:27:11.900: W/System.err(9965):  at android.database.CursorWindow.getString(CursorWindow.java:329) 
01-29 14:27:11.900: W/System.err(9965):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49) 
01-29 14:27:11.900: W/System.err(9965):  at pkg.android.rootways.rootmoney.helper.DatabaseConnectionAPI.getIncomeMonthData(DatabaseConnectionAPI.java:646) 
01-29 14:27:11.900: W/System.err(9965):  at pkg.android.rootways.rootmoney.IncomeActivity$9.onClick(IncomeActivity.java:268) 

어떤 아이디어로 해결할 수 있을까요?

+0

tr_date = "+" '+ strftime ('% Y- % m ', date) + "'"Transaction_Master에서 tr_date를 선택하십시오 : –

답변

2

tr_date 열만 커서에 투영하고 있지만 5 개의 다른 열을 액세스하려고합니다. getColumnIndex()은 커서에없는 열에 대해 -1을 반환합니다.

SELECT tr_date 대신 SELECT * 일 수 있습니다.

+0

: 작동 중입니다! –