android–SQLiteOpenHelper– 在SD卡上创建数据库

android–SQLiteOpenHelper– 在SD卡上创建数据库,第1张

概述在我的测试Android应用程序中,我打算创建和访问数据库文件,它将位于SD卡上.我在一个类的帮助下使用main活动,该类扩展了SQLiteOpenHelper.我想以与以前相同的方式使用它,但我必须以某种方式更改数据库PATH.你知道吗,如何实现它?谢谢我当前扩展SQLiteOpenHelper的类的代码:public class DatabaseDefi

在我的测试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卡上创建数据库所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存