
我已经在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数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)