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

Android DBAdapter 여러 테이블 사용

0 추천

DBAdapter를 구현하였고, 접근하여 사용하는데는 문제가 없었습니다.

근데 1개의 테이블에만 접근을 하면 문제가 없는데

2개는 동시에는 안되는건지,,, 계속 에러가 발생하내요.

 

본문에서 이렇게 2개를 호출하여 사용하면

먼저 선언한것은 에러가 납니다.

DBAdapter state = new DBAdapter(this, DBAdapter.SQL_CREATE_TEAM, "Team");
DBAdapter db = new DBAdapter(this, DBAdapter.SQL_CREATE_SHIP, "Ship");
 
원인을 모르겠내요. 원래가 안되는것인지,,,,
 
 
 
///////////////////////////////////
DBAdapter.class
package Database;
 
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.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
public class DBAdapter {
private DatabaseHelper mHelper;
private SQLiteDatabase mDb;
 
private static String DB_NAME = "Ship.db";
private static int DB_VERSION = 1;
private static String SQL_TABLE_CREATE;
private static String TABLE_NAME;
 
public static final String SQL_CREATE_SHIP = 
"create table Ship (no INTEGER,"
+ " resId INTEGER,"
+ " name text,"
+ " type text,"
+ " speed INTEGER,"
+ " hp INTEGER,"
+ " recover INTEGER,"
+ " skill text,"
+ " skill_ex text,"
+ " distance INTEGER,"
+ " damege INTEGER,"
+ " open INTEGER,"
+ " rank text"
+ ")";
 
public static final String SQL_CREATE_TEAM = "create table Team (resId INTEGER,"
+ " name text,"
+ " type text,"
+ " speed INTEGER,"
+ " hp INTEGER,"
+ " recover INTEGER,"
+ " skill text,"
+ " skill_ex text,"
+ " distance INTEGER,"
+ " damege INTEGER,"
+ " team text"
+ ")";
 
private Context mContext;
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
 
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_TABLE_CREATE);
}
 
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
public DBAdapter(Context context, String sql, String tableName) {
this.mContext = context;
SQL_TABLE_CREATE = sql;
TABLE_NAME = tableName;
}
public DBAdapter open(String db) throws SQLException {
DB_NAME = db+".db";
mHelper = new DatabaseHelper(mContext);
mDb = mHelper.getWritableDatabase();
return this;
}
public void close() {
mHelper.close();
}
public long insertTable(ContentValues values) {
return mDb.insert(TABLE_NAME, null, values);
}
public boolean deleteTable(String pkColumn, long pkData) {
return mDb.delete(TABLE_NAME, pkColumn+"="+pkData, null) > 0;
}
public Cursor selectTable(String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
return mDb.query(TABLE_NAME, columns, selection, selectionArgs, groupBy, having, orderBy);
}
public boolean updateTable(ContentValues values, String pkColumn, long pkData) {
return mDb.update(TABLE_NAME, values, pkColumn+"="+pkData, null) > 0;
}
}
 
입니다 원인이 무엇인까요,,, 어떻게 하면 본문에서 2개의 어댑터를 동시에 접근할 수 있을까요,,,

 

라대 (200 포인트) 님이 2014년 5월 6일 질문

답변 달기

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