oncreate(){ //DBManager 객체를 생성하면서 필요한 정보를 생성자로 전달해주기
dManager = new DBManager(this, "elec_date.db", null, 1); //생성한 객체를 이용해서 SQLitedatabase 객체 얻어오기
db = dManager.getWritableDatabase();
}다른 함수(){ String db_code = barcode1.substring(8, 16);
db = dManager.getReadableDatabase();
//db 객체를 이용해서 테이블에 데이터 저장하기
db.execSQL("INSERT INTO DATE VALUES(null ,'"+db_code+"');");
Toast.makeText(MainActivity.this, ""+"디비에저장됨"+db_code, Toast.LENGTH_SHORT).show();
//db.close();
cursor = db.rawQuery("SELECT DB_DATE FROM DATE", null);
cursor.moveToLast();
int z = cursor.getPosition();
String ss = Integer.toString(z);
String temp_string = cursor.getString(cursor.getColumnIndex(ss));
Toast.makeText(MainActivity.this, ""+"temp_stirng:"+temp_string, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, ""+"ss:"+ss, Toast.LENGTH_SHORT).show();
cursor.close();
dManager.close();
int tea = 0;
if(cursor.moveToPrevious() != false){
tea = Integer.parseInt(temp_string) - Integer.parseInt(cursor.getString(cursor.getColumnIndex(ss)));
}}
안녕하세요 다름이 아니라 sqlite를 쓰다가 도저히 모르는 부분이 생겨서 질문드립니다.
이렇게 코딩하고 실행하면 응용프로그램 종료 뜨면서 실행이 안되는데요
제가 원하는것은 db테이블의 모양은
DATE 테이블
NUM DATE
1 20120605
2 20120705
이런식의 테이블에서 20120605와 20120705를 빼와서 두 숫자의 뺄셈을하여 100이 나오도록 하는 결과값을 도출하고 싶습니다.
제가 코딩한 방법은 맨 마지막 정보인 본 테이블에서 NUM : 2에 있는 레코드를 가져오기 위해서 cursor를 last로 잡고
그 이전 레코드를 가져오기위해서 previous를 하여 두 차이를 구했는데요
무엇이 문제일까요..? positioning하는 방법도 잘못된 것 같기도하고.. 도저히 방법을 못찾겠네요 ㅠㅠ 도와주시면 정말 감사하겠습니다
좋은밤되세요~!
아 그렇네요 그래서 close를 뒤에다가 놓고 위에서 부터 하나하나씩 주석처리해가면서 확인해보니까
cursor.moveToLast();
int z = cursor.getPosition();
String ss = Integer.toString(z);
String temp_string = cursor.getString(cursor.getColumnIndex(ss));
이 부분에서 에러가 나는것 같은데 맨 마지막 데이터를 동적으로 getString 하기위해서 이렇게 짜보았는데 여기서 문제가 발생하는것 같네요.. 뭐가 문제일까요 ㅠㅠ?
요상한 활용이라고 해야겠네요
int z = cursor.getPosition();
String ss = Integer.toString(z); String temp_string = cursor.getString(cursor.getColumnIndex(ss)); 이렇게 되어 있는데 정리를 하면 위의 내용은 z번째 레코드의 z(앞의 z와 같은 숫자임...)라는 Column의 값을 가져오는 것인데요..이거 뭐 어떻게 설명할 방법도 없을 정도로 잘못되어있습니다.DB의 레코드 컬럼(혹은 필드)에 대한 설명을 더 읽어보시고 다시 작성함을 권장드립니다.



위 코드만 놓고 보면 cursor.close(), dManager.close()를 했기 때문에 cursor.moveToPrevious()는 false를 반환하겠는데요.