마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이터 베이스를 확인을 했는데요

0 추천

db를 확인을 했는데요 x,y,z값의 크기글자수가 같아야 되는데 

y축만 글자수가 달라서 문의 드립니다.

db helper코드는 아래와 작성을 했습니다.

public class DBHelper extends SQLiteOpenHelper{



    // DBHelper 생성자로 관리할 DB 이름과 버전 정보를 받음
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    // DB를 새로 생성할 때 호출되는 함수
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 새로운 테이블 생성
        /* 이름은 MONEYBOOK이고, 자동으로 값이 증가하는 _id 정수형 기본키 컬럼과
        item 문자열 컬럼, price 정수형 컬럼, create_at 문자열 컬럼으로 구성된 테이블을 생성. */
        db.execSQL("CREATE TABLE andgle (_id INTEGER PRIMARY KEY AUTOINCREMENT, readBuffer_X TEXT, readBuffer_Y TEXT, readBuffer_Z TEXT);");
    }

    // DB 업그레이드를 위해 버전이 변경될 때 호출되는 함수
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public void insert(String readBuffer_X, String readBuffer_Y, String readBuffer_Z) {
        // 읽고 쓰기가 가능하게 DB 열기
        SQLiteDatabase db = getWritableDatabase();
        // DB에 입력한 값으로 행 추가
        db.execSQL("INSERT INTO andgle VALUES(null, '" + readBuffer_X + "', " + readBuffer_Y + ", '" + readBuffer_Z + "');");
        db.close();
    }

    public void update(int readBuffer_Y, int readBuffer_Z) {
        SQLiteDatabase db = getWritableDatabase();
        // 입력한 항목과 일치하는 행의 가격 정보 수정
        db.execSQL("UPDATE andgle SET readBuffer_Z=" + readBuffer_Z + " WHERE item='" + readBuffer_Y + "';");
        db.close();
    }

    public void delete(int readBuffer_Y) {
        SQLiteDatabase db = getWritableDatabase();
        // 입력한 항목과 일치하는 행 삭제
        db.execSQL("DELETE FROM andgle WHERE readBuffer_Y='" + readBuffer_Y + "';");
        db.close();
    }

    public String getResult() {
        // 읽기가 가능하게 DB 열기
        SQLiteDatabase db = getReadableDatabase();
        String result = "";

        // DB에 있는 데이터를 쉽게 처리하기 위해 Cursor를 사용하여 테이블에 있는 모든 데이터 출력
        Cursor cursor = db.rawQuery("SELECT * FROM andgle", null);
        while (cursor.moveToNext()) {
            result += cursor.getString(0)
                    + " | "
                    + cursor.getString(1)
                    + " | "
                    + cursor.getString(2)
                    + " | "
                    + cursor.getString(3)
                    + " | ";
        }

        return result;
    }
}

메인 액티비티에는 아래와 같이 작성을 했습니다.

final DBHelper dbHelper = new DBHelper(getApplicationContext(), "Angle.ab",null,1);
        final TextView result = (TextView) findViewById(R.id.text1);
String readBuffer_X = mRead_X.getText().toString();
                    String readBuffer_Y = mRead_Y.getText().toString();
                    String readBuffer_Z = mRead_Z.getText().toString();

                    dbHelper.insert(readBuffer_X, readBuffer_Y, readBuffer_Z);
                    result.setText(dbHelper.getResult());

 

초심자1 (790 포인트) 님이 2018년 5월 14일 질문

1개의 답변

0 추천
제가 봤을땐, 현재 소스와 다르게 DB가 최초 생성되었을때는

 y축 field가 integer type 아니였을까 조심스럽게 추측해 봅니다.

app data를 clear해보시고 다시한번 해 보면 어떨까요?
디자이너정 (42,810 포인트) 님이 2018년 5월 14일 답변
도와 주셔서 감사합니다
앱 데이터도 지워보고 앱도 다시 깔았는데도 Y축값은 똑같이 나온네요
좀더 여러가지를 변경 해봐야겠어요
다시 한번 도와주셔서 감사합니다.
...