从Android内存读取SQLITE数据库

从Android内存读取SQLITE数据库,第1张

概述我已经在Java应用程序上创建了一个sqlite数据库,并将其推送到了我的android.我想读取此数据库(以后也可能要写入该数据库).到目前为止,我发现的大多数教程都是在android中创建数据库的.我认为我不需要重写SQLiteOpenHelper类的onCreate()和onUpdate()方法吗?在下面的教程中,他还创

我已经在Java应用程序上创建了一个sqlite数据库,并将其推送到了我的androID.我想读取此数据库(以后也可能要写入该数据库).到目前为止,我发现的大多数教程都是在androID中创建数据库的.

我认为我不需要重写sqliteOpenHelper类的onCreate()和onUpdate()方法吗?在下面的教程中,他还创建了表,因为我已经有了数据库

你们可能知道的任何教程,示例代码吗?

public class DatabaseHandler extends sqliteOpenHelper {    // All Static variables    // Database Version    private static final int DATABASE_VERSION = 1;    // Database name    private static final String DATABASE_name = "contactsManager";    // Contacts table name    private static final String table_CONTACTS = "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";    public DatabaseHandler(Context context) {        super(context, DATABASE_name, null, DATABASE_VERSION);    }    // Creating tables    @OverrIDe    public voID onCreate(sqliteDatabase db) {        String CREATE_CONTACTS_table = "CREATE table " + table_CONTACTS + "("                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_name + " TEXT,"                + KEY_PH_NO + " TEXT" + ")";        db.execsql(CREATE_CONTACTS_table);    }    // Upgrading database    @OverrIDe    public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {        // Drop older table if existed        db.execsql("DROP table IF EXISTS " + table_CONTACTS);        // Create tables again        onCreate(db);    }

我只需要打开内存中的数据库,对我的数据库执行SQL查询并获取结果.

解决方法:

您必须先将资产中的数据库复制到设备上的应用程序存储区(或其他可访问的位置),然后才能使用它.您不能直接在.apk文件中使用它.

有关如何执行此 *** 作的示例:

public class DBAdapter { // DB info public static final String MAIN_DATABASE_name = "yourDB"; public static String MAIN_DB_PATH = "/data/data/your.package.name/databases/"; public static final int MAIN_DATABASE_VERSION = 1; // database control private DatabaseHelper mDbHelper; private static sqliteDatabase mDb; private static Context mCtx; private static class DatabaseHelper extends sqliteOpenHelper {     DatabaseHelper(Context context, String dbname, int dbversion) {         super(context, dbname, null, dbversion);         if (checkDataBase(dbname)) {             openDataBase(dbname);         } else {             try {                 this.getReadableDatabase();                 copyDataBase(dbname);                 this.close();                 openDataBase(dbname);             } catch (IOException e) {                 throw new Error("Error copying database");             }             Toast.makeText(context,                     "Initial " + dbname + " database has been created",                     Toast.LENGTH_LONG).show();         }     }     @OverrIDe     public voID onCreate(sqliteDatabase db) {     }     @OverrIDe     public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {     } } public DBAdapter(Context ctx) {     DBAdapter.mCtx = ctx; } public DBAdapter open(String dbname, int dbversion) throws sqlException {     mDbHelper = new DatabaseHelper(mCtx, dbname, dbversion);     mDb = mDbHelper.getWritableDatabase();     return this; } public voID close() {     mDbHelper.close(); } private static voID copyDataBase(String dbname) throws IOException {     inputStream myinput = mCtx.getAssets().open(dbname);     String outfilename = MAIN_DB_PATH + dbname;     OutputStream 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(); } private static boolean checkDataBase(String dbname) {     sqliteDatabase checkDB = null;     boolean exist = false;     try {         String db = MAIN_DB_PATH + dbname;         checkDB = sqliteDatabase.openDatabase(db, null,                 sqliteDatabase.OPEN_Readonly);     } catch (sqliteException e) {         Log.v("db log", "database does't exist");     }     if (checkDB != null) {         exist = true;         checkDB.close();     }     return exist; } private static voID openDataBase(String dbname) throws sqlException {     String dbPath = MAIN_DB_PATH + dbname;     mDb = sqliteDatabase.openDatabase(dbPath, null,             sqliteDatabase.OPEN_READWRITE); } } 
总结

以上是内存溢出为你收集整理的从Android内存读取SQLITE数据库全部内容,希望文章能够帮你解决从Android内存读取SQLITE数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1210934.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存