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

sqlite 관련 질문합니다.

0 추천
import java.io.File;
import java.util.ArrayList;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.provider.ContactsContract;
import android.util.Log;
 
public class DataBaseHelper {
  private DBHelper mHelper;
	private SQLiteDatabase db;
	private static final String Database_Name="account.db";
	private static final int Database_Version = 2;
	private static String SQL_Table_Create;
	private static String Table_Name;
	public static final String FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + Database_Name;
 
	public static final String SQL_Create_accountdb =
			"create table accountdb (_id integer primary key autoincrement,"
					+"name text not null,"
					+"phone text not null"
					+")";
	private final Context cxt;
 
	private static class DBHelper extends SQLiteOpenHelper {
		DBHelper(Context context) {
			super(context,FILE_PATH,null,Database_Version);
		}
		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL(SQL_Create_accountdb);
		}
		@Override
		public void onOpen(SQLiteDatabase db) {
			super.onOpen(db);
		}
		@Override
		public void onUpgrade(SQLiteDatabase db, int i, int i2) {
			db.execSQL("DROP TABLE IF EXISTS " + Table_Name);
			onCreate(db);
		}
	}
	public DataBaseHelper(Context cxt, String sql, String tname){
		this.cxt=cxt;
		SQL_Table_Create=sql;
		Table_Name=tname;
	}
	public DataBaseHelper open() throws SQLiteException{
		mHelper = new DBHelper(cxt);
		db = mHelper.getWritableDatabase();
		return this;
	}
	public void close() {
		mHelper.close();
	}
	public long insertTable(ContentValues values) {
		return db.insert(Table_Name, null, values);
	}
	public boolean deleteTable(String pkColumn, long pkData) {
		return db.delete(Table_Name, pkColumn+"="+pkData, null)>0;
	}
	public Cursor RawQueryString(String sql){
		return db.rawQuery(sql,null);
	}
	public Cursor selectTable(String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
		return db.query(Table_Name, columns, selection, selectionArgs, groupBy, having, orderBy);
	}
	public boolean updateTable(ContentValues values, String pkColumn, long pkData) {
		return db.update(Table_Name, values, pkColumn+"="+pkData, null)>0;
	}
}

어플이 실행될 때 db가 account.db로 고정되는 것이 아니고 실행될 때마다 1.db, 2.db, 3.db 이런 식으로 바뀌게 하고 싶은데요

그래서 DBHelper(Context context) 부분에 SharedPreferences를 이용해서 하려고하는데 잘 안되네요.

 

DBHelper(Context context) {
			SharedPreferences pref = contextgetSharedPreferences("pref", context.MODE_PRIVATE);
			int now = pref.getInt("order", 0);
			String FILE_PATH=Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + now + ".db";
			SharedPreferences.Editor editor = pref.edit();
			editor.putInt("order", now+1);
			editor.commit();
			super(context,FILE_PATH,null,Database_Version);
		}

이런 식으로 고쳤보려고 했는데 잘 안되네요. 어떻게 해야할까요??

익명사용자 님이 2013년 5월 19일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...