package com.ㅌㅌㅌㅌ.ㅌㅌㅌㅌ;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
public class DatabaseHandler extends SQLiteOpenHelper{
//Database Version
private static final int DATABASE_VERSION = 1;
//Database Name
private static final String DATABASE_NAME = "dataManager.db";
// Data Table name
private static final String TABLE_DATA = "data";
// Data Table Columns names
private static final String KEY_ID = "_id";
private static final String KEY_X = "x";
private static final String KEY_Y = "y";
private static final String KEY_HOUR = "hour";
private static final String KEY_DAY = "day";
public DatabaseHandler(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
// @Override
public void onCreate(SQLiteDatabase db){
String CREATE_DATA_TABLE = "CREATE TABLE data ( _id INTEGER PRIMARY KEY AUTOINCREMENT, x DOUBLE, y DOUBLE, hour INTEGER, day INTEGER );";
db.execSQL(CREATE_DATA_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS "+TABLE_DATA);
// Create tables again
onCreate(db);
}
// Adding new data
public void addData(Data data){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_X, data.getX());
values.put(KEY_Y, data.getY());
values.put(KEY_HOUR, data.getHour());
values.put(KEY_DAY, data.getDay());
db.insert(TABLE_DATA, null, values);
db.close();
}
// Getting single data
public Data getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT x, y, hour, day From data", null);
if (cursor != null)
cursor.moveToFirst();
Data data = new Data(cursor.getDouble(0), cursor.getDouble(1),
Integer.parseInt(cursor.getString(2)), cursor.getInt(3)); // id, x, y, hour, day
// return contact
return data;
}
// Getting All Contacts
public List<Data> getAllContacts() {
List<Data> dataList = new ArrayList<Data>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_DATA;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Data data = new Data();
data.setID(Integer.parseInt(cursor.getString(0)));
data.setX(cursor.getDouble(1));
data.setY(cursor.getDouble(2));
data.setHour(Integer.parseInt(cursor.getString(3)));
data.setDay(cursor.getInt(4));
// Adding contact to list
dataList.add(data);
} while (cursor.moveToNext());
}
// return contact list
return dataList;
}
// Getting contacts Count
public int getDataCount() {
int count;
String dataQuery = "SELECT * FROM " + TABLE_DATA;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(dataQuery, null);
count = cursor.getCount();
cursor.close();
// return count
return count;
}
// Updating single contact
public int updateData(Data data) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_X, data.getX());
values.put(KEY_Y, data.getY());
values.put(KEY_HOUR, data.getHour());
values.put(KEY_DAY, data.getDay());
// updating row
return db.update(TABLE_DATA, values, KEY_ID + " = ?",
new String[] { String.valueOf(data.getID()) });
}
// Deleting single contact
public void deleteData(int i) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_DATA, KEY_ID + " = ?",
new String[] { String.valueOf(i) });
db.close();
}
}
addData를 이용해 db에 값을 넣어줄때마다 실행 시 제일 먼저 db에 넣은 행과 같은 내용을 가진 행만 추가되더군요.
디버깅해서 addData에서 분명히 values에 제대로 된 값이 들어가는 것까지 확인했는데,
정작 만들어진 db파일 추출해보면 다 똑같은 내용의 행만 가지고 있어요 ㅠㅠ
왜 이럴까요... 전혀 알 수가 없네요. 도와주세요!