Как импортировать существующую базу данных SQLite в Android StudioJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как импортировать существующую базу данных SQLite в Android Studio

Сообщение Anonymous »

У меня есть существующая база данных SQLite, которую я хочу использовать с моим приложением для Android. Я просмотрел все онлайн-уроки, которые у меня не работают. При запуске приложения в эмуляторе я получаю сообщение об ошибке, в котором говорится, что таблица, которую я создал в базе данных, не существует *(android.database.sqlite.SQLiteException: no such table: adk_peaks (code 1): , при компиляции: ВЫБЕРИТЕ * ИЗ adk_peaks ГДЕ 1)*.

adk_peaks — имя таблицы. Сейчас я только пытаюсь получить информацию из таблицы для отображения в TextView.

Ниже показано мое расширение SQLiteOpenHelper:

Код: Выделить всё

package kyle.peaktracker;

import android.database.SQLException;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.database.Cursor;
import android.content.Context;
import android.content.ContentValues;
import android.util.Log;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MyDBHandler extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "peaks.db";
//private static final String DATABASE_PATH =             "/app/src/main/assests/Database/";
//private static final String DATABASE_PATH =     "/data/data/kyle.peaktracker/databases/";
//private static final String DATABASE_PATH = "\\app\\src\\main\\assets\\Database\\";
public static String DATABASE_PATH = ""; //final?
private static final String TABLE_ADK = "adk_peaks";
private SQLiteDatabase myDataBase;
private final Context myContext;

//Columns
private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "_name";
private static final String COLUMN_HEIGHT = "_height";
private static final String COLUMN_CLIMBED = "_climbed";
private static final String COLUMN_DATE = "_date";
private static final String COLUMN_LIST = "_list";

public MyDBHandler(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;
DATABASE_PATH = myContext.getDatabasePath(DATABASE_NAME).toString();
}

public void createDatabase() throws IOException
{
boolean dbExist = checkDataBase();
if(dbExist)
{
Log.v("DB Exists", "db exists");

}
boolean dbExist1 = checkDataBase();
if(!dbExist1)
{
this.getReadableDatabase();
try
{
this.close();
copyDataBase();
}
catch (IOException e)
{
throw new Error("Error copying database");
}
}
}

//Check database already exist or not
private boolean checkDataBase()
{
boolean checkDB = false;
try
{
String myPath = DATABASE_PATH;
File dbfile = new File(myPath);
checkDB = dbfile.exists();
}
catch(SQLiteException e)
{
}
return checkDB;
}

private void copyDataBase() throws IOException
{
String outFileName = DATABASE_PATH;
OutputStream myOutput = new FileOutputStream(outFileName);
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) >  0)
{
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}

public void db_delete()
{
File file = new File(DATABASE_PATH);
if(file.exists())
{
file.delete();
System.out.println("delete database file.");
}
}

//Open database
public void openDatabase() throws SQLException
{
String myPath = DATABASE_PATH;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}

public synchronized void closeDataBase()throws SQLException
{
if(myDataBase != null)
myDataBase.close();
super.close();
}

//Override onCreate and onUpgrade
public void onCreate(SQLiteDatabase db){
/*String query = "CREATE TABLE " + TABLE_ADK + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT " +
COLUMN_NAME + " TEXT " +
COLUMN_HEIGHT + " INTEGER " +
COLUMN_CLIMBED + " INTEGER " +
COLUMN_DATE + " TEXT " +
COLUMN_LIST + " TEXT " +
");";

db.execSQL(query); */
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)    {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ADK);
onCreate(db);
}

public String databaseToString(){
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_ADK + " WHERE 1";

Cursor c = db.rawQuery(query, null);

c.moveToFirst();

while(!c.isAfterLast()){
if(c.getString(c.getColumnIndex("_name"))!= null){
dbString += c.getString(c.getColumnIndex("_name"));
dbString += "\n";
}
}
c.close(); //Added
db.close();
return dbString;
}
}
Это мой пакет MainActivity:
kyle.peaktracker;

Код: Выделить всё

import android.database.SQLException;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import java.io.IOException;
import java.util.List;

public class MainActivity extends AppCompatActivity {

TextView testText;
MyDBHandler dbHandler;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

testText = (TextView) findViewById(R.id.test_text);
//dbHandler = new MyDBHandler(this, null, null, 1);
dbHandler = new MyDBHandler(this);
try {
dbHandler.createDatabase();
} catch (IOException ioe){
throw new Error("Unable to create database");
}

try {

dbHandler.openDatabase();

}catch(SQLException sqle){

throw sqle;

}

printDatabase();
}

public void printDatabase(){
String dbString = dbHandler.databaseToString();
testText.setText(dbString);
}
}
Любые советы приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/483 ... oid-studio
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как импортировать существующую базу данных SQLite в Android Studio
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как импортировать существующую базу данных SQLite в Android Studio
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как импортировать существующую базу данных SQLite в Android Studio
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать или изменить локальную базу данных (SQLite) в глобальную базу данных (Firebase, MongoDB) на одной стад
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как экспортировать/импортировать базу данных Room SQLite моего приложения Android Jetpack-Compose?
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»