Как связать 2 таблицы из разных активити?
Добавлено: 29 апр 2015, 19:26
Добрый вечер!
Мучаюсь с таким вопросом. Есть БД, нужно создать 2 таблицы. Одна таблица групп в одной активности, вторая таблица учащихся в другой активности.
Сначала создал 2 активности и в каждой по базе данных.
то есть myDB в одной активности и myDB1 в другой, но как я понимаю, я создал 2 разных БД.
Когда ставлю одинаковое имя, ошибка - не существует таблицы с именем.
Вот класс активити групп.
Вот класс активити и студентов
Что делаю не верно? И как связать 2 этих таблицы?
Пожалуйста помогите.
Мучаюсь с таким вопросом. Есть БД, нужно создать 2 таблицы. Одна таблица групп в одной активности, вторая таблица учащихся в другой активности.
Сначала создал 2 активности и в каждой по базе данных.
Код: Выделить всё
public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB", null, DB_VERSION);
}Когда ставлю одинаковое имя, ошибка - не существует таблицы с именем.
Вот класс активити групп.
Код: Выделить всё
DBHelper dbHelper;
final int DB_VERSION = 24; // версия БД
final String DROP_TABLE = "DROP TABLE IF EXISTS "+"mygrupp";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.redact_grupp);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(this);
btnUpdate = (Button) findViewById(R.id.btnUpdate);
btnUpdate.setOnClickListener(this);
btnDelete = (Button) findViewById(R.id.btnDelete);
btnDelete.setOnClickListener(this);
btnRead = (Button) findViewById(R.id.btnRead);
btnRead.setOnClickListener(this);
btnVivod = (Button) findViewById(R.id.btnVivod);
btnVivod.setOnClickListener(this);
IDGrupp = (EditText) findViewById(R.id.IDGrupp);
NameGrupp = (EditText) findViewById(R.id.NameGrupp);
NameFak = (EditText) findViewById(R.id.NameFak);
NumVivod = (EditText) findViewById(R.id.NumVivod);
// создаем объект для создания и управления версиями БД
dbHelper = new DBHelper(this);
// Описание курсора
Cursor c;
}
public void onClick(View v) {
// создаем объект для данных
ContentValues cv = new ContentValues();
// получаем данные из полей ввода
String namegrupp = NameGrupp.getText().toString();
String namefak = NameFak.getText().toString();
String id = IDGrupp.getText().toString();
// подключаемся к БД
SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (v.getId()) {
case R.id.btnAdd:
Log.d(LOG_TAG, "--- Insert in mygrupp: ---");
// подготовим данные для вставки в виде пар: наименование столбца -
// значение
cv.put("id", id);
cv.put("namegrupp", namegrupp);
cv.put("namefak", namefak);
// вставляем запись и получаем ее ID
long rowID = db.insert("mygrupp", null, cv);
Log.d(LOG_TAG, "row inserted, ID = " + rowID);
break;
case R.id.btnRead:
Log.d(LOG_TAG, "--- Rows in mygrupp: ---");
// делаем запрос всех данных из таблицы mytable, получаем Cursor
Cursor c = db.query("mygrupp", null, null, null, null, null, null);
// ставим позицию курсора на первую строку выборки
// если в выборке нет строк, вернется false
if (c.moveToFirst()) {
// определяем номера столбцов по имени в выборке
int idColIndex = c.getColumnIndex("id");
int gruppColIndex = c.getColumnIndex("namegrupp");
int fakColIndex = c.getColumnIndex("namefak");
do {
// получаем значения по номерам столбцов и пишем все в лог
Log.d(LOG_TAG,
"ID = " + c.getInt(idColIndex) + ", namegrupp = "
+ c.getString(gruppColIndex) + ", namefak = "
+ c.getString(fakColIndex));
// переход на следующую строку
// а если следующей нет (текущая - последняя), то false -
// выходим из цикла
} while (c.moveToNext());
} else
Log.d(LOG_TAG, "0 rows");
c.close();
break;
case R.id.btnDelete:
Log.d(LOG_TAG, "--- Clear mygrupp: ---");
// удаляем все записи
int clearCount = db.delete("mygrupp", null, null);
Log.d(LOG_TAG, "deleted rows count = " + clearCount);
break;
case R.id.btnUpdate:
if (id.equalsIgnoreCase("")) {
break;
}
Log.d(LOG_TAG, "--- Update mygrupp: ---");
// подготовим значения для обновления
cv.put("id", id);
cv.put("namegrupp", namegrupp);
cv.put("namefak", namefak);
// обновляем по id
int updCount = db.update("mygrupp", cv, "id = ?",
new String[] { id });
Log.d(LOG_TAG, "updated rows count = " + updCount);
break;
case R.id.btnDel:
if (id.equalsIgnoreCase("")) {
break;
}
Log.d(LOG_TAG, "--- Delete from mygrupp: ---");
// удаляем по id
int delCount = db.delete("mygrupp", "id = " + id, null);
Log.d(LOG_TAG, "deleted rows count = " + delCount);
break;
}
// закрываем подключение к БД
dbHelper.close();
}
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB", null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "--- onCreate database ---");
// создаем таблицу с полями
// создаем таблицу с полями
db.execSQL("create table mygrupp ("
+ "id integer primary key autoincrement,"
+ "namegrupp text,"
+ "namefak text"+ " )");
/* // создаем таблицу с полями
db1.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "family text,"
+ "birthday text,"
+ "gruppa text"+ ")");*/
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE);
onCreate(db);
}
}
}Код: Выделить всё
public class RedactStudentov extends Activity implements OnClickListener {
final String LOG_TAG = "myLogs";
Button btnAdd, btnRead, btnClear, btnUpd, btnDel;
EditText etName, etFamily, etID, etDR, etGruppa;
DBHelper dbHelper;
final int DB_VERSION = 24; // версия БД
final String DROP_TABLE = "DROP TABLE IF EXISTS "+"mytable";
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.redact_studentov);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(this);
btnRead = (Button) findViewById(R.id.btnRead);
btnRead.setOnClickListener(this);
btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(this);
btnUpd = (Button) findViewById(R.id.btnUpd);
btnUpd.setOnClickListener(this);
btnDel = (Button) findViewById(R.id.btnDel);
btnDel.setOnClickListener(this);
etName = (EditText) findViewById(R.id.etName);
etFamily = (EditText) findViewById(R.id.etFamily);
etID = (EditText) findViewById(R.id.etID);
etDR = (EditText) findViewById(R.id.etDR);
etGruppa = (EditText) findViewById(R.id.etGruppa);
// создаем объект для создания и управления версиями БД
dbHelper = new DBHelper(this);
}
public void onClick(View v) {
// создаем объект для данных
ContentValues cv = new ContentValues();
// получаем данные из полей ввода
String name = etName.getText().toString();
String family = etFamily.getText().toString();
String id = etID.getText().toString();
String birthday = etDR.getText().toString();
String gruppa = etGruppa.getText().toString();
// подключаемся к БД
SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (v.getId()) {
case R.id.btnAdd:
Log.d(LOG_TAG, "--- Insert in mytable: ---");
// подготовим данные для вставки в виде пар: наименование столбца -
// значение
cv.put("name", name);
cv.put("family", family);
cv.put("birthday", birthday);
cv.put("gruppa", gruppa);
// вставляем запись и получаем ее ID
long rowID = db.insert("mytable", null, cv);
Log.d(LOG_TAG, "row inserted, ID = " + rowID);
break;
case R.id.btnRead:
Log.d(LOG_TAG, "--- Rows in mytable: ---");
// делаем запрос всех данных из таблицы mytable, получаем Cursor
Cursor c = db.query("mytable", null, null, null, null, null, null);
// ставим позицию курсора на первую строку выборки
// если в выборке нет строк, вернется false
if (c.moveToFirst()) {
// определяем номера столбцов по имени в выборке
int idColIndex = c.getColumnIndex("id");
int nameColIndex = c.getColumnIndex("name");
int familyColIndex = c.getColumnIndex("family");
int birthdayColIndex = c.getColumnIndex("birthday");
int gruppaColIndex = c.getColumnIndex("gruppa");
do {
// получаем значения по номерам столбцов и пишем все в лог
Log.d(LOG_TAG,
"ID = " + c.getInt(idColIndex) + ", name = "
+ c.getString(nameColIndex) + ", family = "
+ c.getString(familyColIndex) + ", birthday = "
+ c.getString(birthdayColIndex) + ", gruppa = "
+ c.getString(gruppaColIndex));
// переход на следующую строку
// а если следующей нет (текущая - последняя), то false -
// выходим из цикла
} while (c.moveToNext());
} else
Log.d(LOG_TAG, "0 rows");
c.close();
break;
case R.id.btnClear:
Log.d(LOG_TAG, "--- Clear mytable: ---");
// удаляем все записи
int clearCount = db.delete("mytable", null, null);
Log.d(LOG_TAG, "deleted rows count = " + clearCount);
break;
case R.id.btnUpd:
if (id.equalsIgnoreCase("")) {
break;
}
Log.d(LOG_TAG, "--- Update mytabe: ---");
// подготовим значения для обновления
cv.put("name", name);
cv.put("family", family);
cv.put("birthday", birthday);
cv.put("gruppa", gruppa);
// обновляем по id
int updCount = db.update("mytable", cv, "id = ?",
new String[] { id });
Log.d(LOG_TAG, "updated rows count = " + updCount);
break;
case R.id.btnDel:
if (id.equalsIgnoreCase("")) {
break;
}
Log.d(LOG_TAG, "--- Delete from mytabe: ---");
// удаляем по id
int delCount = db.delete("mytable", "id = " + id, null);
Log.d(LOG_TAG, "deleted rows count = " + delCount);
break;
}
// закрываем подключение к БД
dbHelper.close();
}
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB", null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "--- onCreate database ---");
// создаем таблицу с полями
db.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "family text,"
+ "birthday text,"
+ "gruppa text"+ ")");
db.execSQL("create table mygrupp ("
+ "id integer primary key autoincrement,"
+ "namegrupp text,"
+ "namefak text"+ " )");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE);
onCreate(db);
}
}
}Пожалуйста помогите.