
在我的测试Android应用程序中,我打算创建和访问数据库文件,它将位于SD卡上.我在一个类的帮助下使用main活动,该类扩展了sqliteOpenHelper.我想以与以前相同的方式使用它,但我必须以某种方式更改数据库PATH.你知道吗,如何实现它?
谢谢
我当前扩展sqliteOpenHelper的类的代码:
public class DatabaseDeFinition extends sqliteOpenHelper{private static final String DATABASE_name="test.db";private static final int DATABASE_VERSION=1;public DatabaseDeFinition(Context context) { super(context,DATABASE_name,null,DATABASE_VERSION);}@OverrIDepublic voID onCreate(sqliteDatabase db) { db.execsql("CREATE table "+table_name+" ("+ _ID +" INTEGER PRIMARY KEY autoINCREMENT,"+ name+" TEXT NOT NulL," +SURname+" TEXT NOT NulL,"+PHONE+" INT NOT NulL);");}@OverrIDepublic voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { db.execsql("DROP table IF EXISTS" + table_name); onCreate(db);}和我的主要代码:
public class DatabaseExampleActivity extends Activity { private DatabaseDeFinition database; private static String[] FROM={_ID,name,SURname,PHONE}; private static String ORDER_BY=" DESC"; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); database= new DatabaseDeFinition(this); try{ String name = null; String surname=null; int phone=0; addEvent("John","Black",111012345); }finally{ database.close(); } }}最佳答案首先,您必须指定SD卡的路径.你可以通过创建一个这样的字符串来做到这一点:public static final String DATABASE_file_PATH = "/sdcard";但是你应该打电话
Environment.getExternalStorageDirectory() 获取SD卡的根路径并使用它创建数据库.之后,您可以根据需要创建数据库.这是一个例子
public class DatabaseHelper{ private static final String TAG = "DatabaseHelper"; public static final String DATABASE_file_PATH = Environment.getExternalStorageDirectory(); public static final String DATABASE_name = "mydb"; public static final String TRACKS_table = "tracks"; public static final String TRACK_INFO_table = "track_info"; private static final String TRACKS_table_CREATE = "create table " + TRACKS_table + " (_ID integer primary key autoincrement,Title text not null,description text null,created_at date not null);"; private static final String TRACK_INFO_table_CREATE = "create table " + TRACK_INFO_table + " (_ID integer primary key autoincrement,track_ID integer not null,latitude real not null,longitude real not null,altitude real not null,created_at date not null);";private sqliteDatabase database;public DatabaseHelper() { try { database = sqliteDatabase.openDatabase(DATABASE_file_PATH + file.separator + DATABASE_name,sqliteDatabase.OPEN_READWRITE); } catch (sqliteException ex) { Log.e(TAG,"error -- " + ex.getMessage(),ex); // error means tables does not exits createtables(); } finally { DBUtil.safeCloseDataBase(database); }}private voID createtables(){ database.execsql(TRACKS_table_CREATE); database.execsql(TRACK_INFO_table_CREATE);}public voID close(){ DBUtil.safeCloseDataBase(database);}public sqliteDatabase getReadableDatabase(){ database = sqliteDatabase.openDatabase(DATABASE_file_PATH + file.separator + DATABASE_name,sqliteDatabase.OPEN_Readonly); return database;}public sqliteDatabase getWritableDatabase(){ database = sqliteDatabase.openDatabase(DATABASE_file_PATH + file.separator + DATABASE_name,sqliteDatabase.OPEN_READWRITE); return database;}最后,您必须在清单中设置权限,如下所示:androID.permission.WRITE_EXTERNAL_STORAGE
祝好运 :)
Arkde 总结
以上是内存溢出为你收集整理的android – SQLiteOpenHelper – 在SD卡上创建数据库全部内容,希望文章能够帮你解决android – SQLiteOpenHelper – 在SD卡上创建数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)