База с двумя таблицами
Добавлено: 31 май 2016, 22:15
Подскажите пожалуйста.
У меня есть SQL база и в ней две таблицы:
CREATE TABLE `TorgPred` (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`username` TEXT NOT NULL,
`price` TEXT NOT NULL,
`status` INTEGER NOT NULL
);
CREATE TABLE `Monitoring` (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`namett` TEXT NOT NULL,
`adrestt` TEXT NOT NULL,
`teltt` TEXT NOT NULL,
`geott` TEXT NOT NULL,
`emailtt` TEXT NOT NULL,
`timett` TEXT NOT NULL,
`_idtt` INTEGER NOT NULL,
FOREIGN KEY(`_idtt`) REFERENCES `TorgPred`(`_id`)
);
C первой с свободно работаю ч/з MainActivity, а вторая выдаёт ошибку, когда пытаюсь к ней обратится в другом активити.
android.database.sqlite.SQLiteException: no such table: Monitiring (code 1): , while compiling: SELECT _idtt as _id, namett From Monitiring
Скажите может, что манифесте или в DBHelper надо что то указать, но с первой табл всё нормально.
package ru.verjilius.p001_dipmobile;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.content.Context;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.sql.SQLException;
public class DatabaseHelper extends SQLiteOpenHelper {
public static String DB_PATH = "/data/data/ru.verjilius.p001_dipmobile/databases/";
public static String DB_NAME = "DipBase.db";
public static final int SCHEMA = 1; // версия базы данных
public static final String TABLE = "TorgPred";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "username";
public static final String COLUMN_PRICE = "price";
public static final String COLUMN_STATUS = "status";
public static final String TABLE_TT = "Monitoring";
public static final String COLUMN_IDTT = "_idtt";
public static final String COLUMN_NAMETT = "namett";
public static final String COLUMN_ADRESTT = "adrestt";
public static final String COLUMN_TELTT = "teltt";
public static final String COLUMN_GEOTT = "geott";
public static final String COLUMN_EMAILTT = "emailtt";
public static final String COLUMN_TIMETT = "timett";
private SQLiteDatabase database;
private Context myContext;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, SCHEMA);
this.myContext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void create_db(){
InputStream myInput = null;
OutputStream myOutput = null;
try {
File file = new File(DB_PATH + DB_NAME);
if (!file.exists()) {
this.getReadableDatabase();
//получаем локальную бд как поток
myInput = myContext.getAssets().open(DB_NAME);
// Путь к новой бд
String outFileName = DB_PATH + DB_NAME;
// Открываем пустую бд
myOutput = new FileOutputStream(outFileName);
// побайтово копируем данные
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
}
catch(IOException ex){
}
}
public void open() throws SQLException {
String path = DB_PATH + DB_NAME;
database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
}
@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}
}
Буду очень балогодарен за любые наводки.
У меня есть SQL база и в ней две таблицы:
CREATE TABLE `TorgPred` (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`username` TEXT NOT NULL,
`price` TEXT NOT NULL,
`status` INTEGER NOT NULL
);
CREATE TABLE `Monitoring` (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`namett` TEXT NOT NULL,
`adrestt` TEXT NOT NULL,
`teltt` TEXT NOT NULL,
`geott` TEXT NOT NULL,
`emailtt` TEXT NOT NULL,
`timett` TEXT NOT NULL,
`_idtt` INTEGER NOT NULL,
FOREIGN KEY(`_idtt`) REFERENCES `TorgPred`(`_id`)
);
C первой с свободно работаю ч/з MainActivity, а вторая выдаёт ошибку, когда пытаюсь к ней обратится в другом активити.
android.database.sqlite.SQLiteException: no such table: Monitiring (code 1): , while compiling: SELECT _idtt as _id, namett From Monitiring
Скажите может, что манифесте или в DBHelper надо что то указать, но с первой табл всё нормально.
package ru.verjilius.p001_dipmobile;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.content.Context;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.sql.SQLException;
public class DatabaseHelper extends SQLiteOpenHelper {
public static String DB_PATH = "/data/data/ru.verjilius.p001_dipmobile/databases/";
public static String DB_NAME = "DipBase.db";
public static final int SCHEMA = 1; // версия базы данных
public static final String TABLE = "TorgPred";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "username";
public static final String COLUMN_PRICE = "price";
public static final String COLUMN_STATUS = "status";
public static final String TABLE_TT = "Monitoring";
public static final String COLUMN_IDTT = "_idtt";
public static final String COLUMN_NAMETT = "namett";
public static final String COLUMN_ADRESTT = "adrestt";
public static final String COLUMN_TELTT = "teltt";
public static final String COLUMN_GEOTT = "geott";
public static final String COLUMN_EMAILTT = "emailtt";
public static final String COLUMN_TIMETT = "timett";
private SQLiteDatabase database;
private Context myContext;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, SCHEMA);
this.myContext=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void create_db(){
InputStream myInput = null;
OutputStream myOutput = null;
try {
File file = new File(DB_PATH + DB_NAME);
if (!file.exists()) {
this.getReadableDatabase();
//получаем локальную бд как поток
myInput = myContext.getAssets().open(DB_NAME);
// Путь к новой бд
String outFileName = DB_PATH + DB_NAME;
// Открываем пустую бд
myOutput = new FileOutputStream(outFileName);
// побайтово копируем данные
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
}
catch(IOException ex){
}
}
public void open() throws SQLException {
String path = DB_PATH + DB_NAME;
database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
}
@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}
}
Буду очень балогодарен за любые наводки.
