Android 创建数据库的几种方法

Android 创建数据库的几种方法,第1张

Android提供了5种方式来让用户保存持久化应用程序数据。根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: 

① 使用SharedPreferences存储数据 

② 文件存储数据

③  SQLite数据库存储数据

④ 使用ContentProvider存储数据

⑤ 网络存储数据

建立数据库

public class WeatherDataBaseHelper extends SQLiteOpenHelper {

private static final String TAG = "pin"

// private static final String CREAT_TABLE_SQL =

// "create table IPTV(_id integer primary key autoincrement,"

// +"_name String not null, _path String not null)"

// private static final String CREAT_TABLE_SQL = "create table " +

// DataTools.TABLE_NAME + "("

// + DataTools._ID + " integer autoincrement,"

// + DataTools.NAME + " String not null,"

// + DataTools.PATH + " String not null,"

// + DataTools.HASHCODE + " integer "

// + "primary key(" + DataTools._ID + "," + DataTools.HASHCODE + ")"

// + ")"

private static final String CREAT_TABLE_SQL = "create table " + DataTools.TABLE_NAME + "("

+ DataTools._ID + " integer primary key,"

+ DataTools.CITY + " String not null,"

+ DataTools.TEMP_CUR + " String not null,"

+ DataTools.TEMP_L + " String not null,"

+ DataTools.TEMP_H + " String not null,"

+ DataTools.STATUS + " String not null,"

+ DataTools.IMAGE + " blob not null" + ")"// blob

/**

* @param context

*/

public WeatherDataBaseHelper(Context context) {

super(context, DataTools.DB_NAME, null, DataTools.DATABASE_VERSION)

// TODO Auto-generated constructor stub

}

/**

* @param context

* @param name

* @param factory

* @param version

*/

public WeatherDataBaseHelper(Context context, String name, int version) {

super(context, name, null, version)

// TODO Auto-generated constructor stub

Log.v(TAG, " WeatherDataBaseHelper-------constructor------------")

}

@Override

public void onCreate(SQLiteDatabase db) {

Log.v(TAG, "WeatherDataBaseHelper on creat-------------------")

db.execSQL(CREAT_TABLE_SQL)

}

/**

* when version changed,updata database

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

Log.v(TAG, "on upgrade")

String sql = " DROP TABLE IF EXISTS " + DataTools.TABLE_NAME

db.execSQL(sql)

onCreate(db)

}

}

Android中提供4种数据存储的方法:(1)SharedPreferences,用键值对的方式来存储数据,是一种轻量级的存储机制,可以存储一些属性等。(2)Files:文件输入输出流的方式存储数据,FileInputStream和FileOutputStream。在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。写入SD卡除外。(3)SQLite(4)网络(这个不算吧~~~--!)。

SQLite:

(1)创建和打开数据库可以使用方法openOrCreateDatabase,它会自动去检测是否存在数据库,如果存在则打开,如果不存在则创建一个数据库;成功返回一个SQliteDatabase对象。(2)创建一张表通过SQL语句实现,调用sqliteDatabase对象的execSQL方法,执行创建表的SQL语句。

(3)向数据表中添加一条记录可以直接通过SQL语句实现,也可以使用ContentValue对象,ContentValue对象是一个Map,Key是字段名,Value是值。Cv.put(key,value)然后调用sqliteDatabase对象的

insert(tableName,null,cv)方法插入数据。

(4)删除数据可以直接执行SQL,也可以执行sqliteDatabase的delete方法。

(5)同理修改数据也是执行SQL或调用update方法,需要传入ContenValue的对象表示修改的内容。

(6)关闭数据库sqliteDatabase.close()

(7)删除指定表调用SQL语句即可。

(8)查询:在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor对象指向的是每条数据。例如cur.moveToFirst()cur.moveToNext()等。在实际开发中,为了能够更好地管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库 *** 作类。SQLiteOpenHelper的构造方法中分别需要传入Context、数据库名称、CursorFactory(一般默认null)、数据库版本号。在SQLiteOpenHelper中首先执行的是onCreate方法(当数据库第一次被创建时)。在构造函数中并没有真正创建数据库,而是调用getWriteableDatabase或者getReadableDatabase方法时才真正去创建数据库,并且返回一个SQLiteDatabase对象。


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

原文地址: http://outofmemory.cn/sjk/9654402.html

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

发表评论

登录后才能评论

评论列表(0条)

保存