저는 새로운 데이터베이스 (SQLite)이고 안드로이드에서 다중 테이블 데이터베이스를 만들려고합니다. 각 테이블에는 동일한 행 (id, name, ph_number)이 있습니다. 모든 테이블에는 "연락처"개체가 저장됩니다.다중 테이블 데이터베이스 SQLite android
addContactDatos (Contact contact, int partido) 메소드를 사용하여 하나의 테이블에 연락처를 저장하려는 경우 원하는 테이블뿐만 아니라 모든 테이블에 저장됩니다. 어떻게 해결할 수 있습니까?
이
은 처리기입니다 :public class DatabaseHandler extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "contactsManager";
// Contacts Tables names
private static final String TABLE_PRIMERO = "contacts";
private static final String TABLE_SEGUNDO = "contacts";
private static final String TABLE_TERCERO = "contacts";
private static final String TABLE_CUARTO = "contacts";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
int oldVersion=1;
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE1 = "CREATE TABLE_PRIMERO " + TABLE_PRIMERO + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE1);
String CREATE_CONTACTS_TABLE2 = "CREATE TABLE_SEGUNDO " + TABLE_SEGUNDO + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE2);
String CREATE_CONTACTS_TABLE3 = "CREATE TABLE_TERCERO " + TABLE_TERCERO + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE3);
String CREATE_CONTACTS_TABLE4 = "CREATE TABLE_CUARTO " + TABLE_CUARTO + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE4);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRIMERO);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SEGUNDO);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TERCERO);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CUARTO);
// Create tables again
onCreate(db);
}
public void addContactDatos(Contact contact, int partido) {
SQLiteDatabase db = this.getWritableDatabase();
// Inserting Row
if (partido == 1) {
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Number
db.insert(TABLE_PRIMERO, null, values);
db.close(); // Closing database connection
Log.d("Entra","MAL");
}
// Inserting Row
if (partido == 2) {
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Number
db.insert(TABLE_SEGUNDO, null, values);
db.close(); // Closing database connection
Log.d("Entra","2");
}
// Inserting Row
if (partido == 3) {
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Number
db.insert(TABLE_TERCERO, null, values);
db.close(); // Closing database connection
Log.d("Entra","MAL");
}
// Inserting Row
if (partido == 4) {
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Number
db.insert(TABLE_CUARTO, null, values);
db.close(); // Closing database connection
Log.d("Entra","MAL");
}
}
// Getting All Contacts
public List<Contact> getAllContacts(int partido) {
List<Contact> contactList = new ArrayList<Contact>();
String selectQuery="";
// Select All Query
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
switch (partido){
case 1:
selectQuery = "SELECT * FROM " + TABLE_PRIMERO;
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
break;
case 2:
selectQuery = "SELECT * FROM " + TABLE_SEGUNDO;
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
break;
case 3:
selectQuery = "SELECT * FROM " + TABLE_TERCERO;
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
break;
case 4:
selectQuery = "SELECT * FROM " + TABLE_CUARTO;
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
break;
}
// return contact list
return contactList;
}
public void deleteDB() {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_PRIMERO, null, null);
db.delete(TABLE_SEGUNDO, null, null);
db.delete(TABLE_TERCERO, null, null);
db.delete(TABLE_CUARTO, null, null);
}
그리고이 개체 모델 접촉이다 공용 클래스 연락 {
//private variables
int _id;
String _name;
String _phone_number;
// Empty constructor
public Contact(){
}
// constructor
public Contact(int id, String name, String _phone_number){
this._id = id;
this._name = name;
this._phone_number = _phone_number;
}
// constructor
public Contact(String name, String _phone_number){
this._name = name;
this._phone_number = _phone_number;
}
// getting ID
public int getID(){
return this._id;
}
// setting id
public void setID(int id){
this._id = id;
}
// getting name
public String getName(){
return this._name;
}
// setting name
public void setName(String name){
this._name = name;
}
// getting phone number
public String getPhoneNumber(){
return this._phone_number;
}
// setting phone number
public void setPhoneNumber(String phone_number){
this._phone_number = phone_number;
}
}
와트 내가 원하는 할 수있는 방법 THER입니다. 나는 약간의 도움에 정말로 감사 할 것이다. 대단히 감사합니다.
테이블을 만들지 않았으므로 시도했지만 작동하지 않았습니다. 각 테이블마다 다른 객체 모델 (contact_1, contact_2, contact_3, contact_4)을 수행해야합니까? 또는 단지 하나? – Alberto
모델을 구별 할 필요가 없습니다. 그렇다면 네 테이블 만 있으면 더 잘 살 수 있다면 4 테이블을 가질 필요가 있습니까? "id_partido"라고하는 숫자 필드를 추가하면 그 partido와 관련된 값을 삽입하고 검색 할 수 있습니다 ... 논리가있는 1000 개의 partidos가 있으면 1000 개의 테이블을 만들어야합니다. 이는 건강하지 않습니다. .. –