Android学习:SQLite使用

概述: 

在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。

SQLite最大的特点是可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY(主键)的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略name字段的类型信息:

CREATE TABLE person (personid integerprimary key autoincrement, name varchar(20))

——事实上在sqlite中可以保存超过20个字段

 

使用步骤:

因为比较熟悉j2ee当中数据库的使用,故前两步以此为对比学习Android中SQLite数据库的使用。

1、创建数据库 3、为实体数据表创建Java bean 

j2ee开发中,数据库由程序员手工创建。 

Android开发中,数据库被自动创建:

使用Android提供的工具类SQLiteOpenHelper创建数据库。

public static class DBOpenHelper extends SQLiteOpenHelper {
		public DBOpenHelper(Context context) {
			//参数一:上下文对象
			//参数二:指定要生成的数据库名称  DATABASE_NAME="EasyDispatch"
			//参数三:游标工厂(游标用于对查询后的结果集进行随机访问) null代表使用系统默认的游标工厂产生游标对象。
		        //参数四:数据库版本号(要求不能为0)DATABASE_VERSION="1"
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}
		// 重载创建数据库的方法,在数据库第一次被创建的时候调用
		@Override
		public void onCreate(SQLiteDatabase db) {
                          //在这个方法中生成应用所需的数据表
             //传入的参数SQLiteDatabase(数据库操作实例)中封装了针对数据库的所有操作,包括增删改查
             // db.execSQL专门用来执行sql语句
        db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))");
      }
	// 重载更新数据库的方法,数据库版本变更的时候调用
		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}		


2、加载驱动 

j2ee开发中需要加载数据库驱动,创建连接。

使用SQLite数据库不用加载驱动,不用创建连接。

3、为实体数据表创建Java bean

4、创建Service类,加入增删改查方法。

5、Service中调用DBOpenHelper(参照项目中DBManager类的queryTaskReason方法)

6、语句的执行:

SQLiteOpenHelper helper = new DBOpenHelper (context);
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL(“insert into person(name,phone) values (‘111’,’222’)”);
db.close();   //关闭数据库(当应用中只有一个地方使用数据库时,可以不将其关闭,//避免频繁打开数据库,提高性能)

插入、删除、修改SQL的执行方法:db.execSQL()

查找的执行方法:db.rawQuery()

返回一条记录:

Cursor cursor= db.rawQuery(“select…”);
// Cursor游标对象的作用:用于对查询返回的结果集进行随机方法。
//如果查询出的数据最多只有一条,移到第一条即可:
if(cursor.moveToFirst()){
   String name= cursor.getString(cursor.getColumnIndex(“name”));
   return name; 
}

返回多条记录:

Cursor cursor= db.rawQuery(“select…”);
while (cursor.moveToNext()) {
String name= cursor.getString(cursor.getColumnIndex(“name”));
listName.add(name);
return listName;
}

备注:

SQLiteOpenHelper中的两个方法——getReadableDatabase()和getWritableDatabase()方法

getReadableDatabase()getWritableDatabase()方法的区别:

数据库的磁盘空间满时不能调用getWritableDatabase()方法。

但是可以调用getReadableDatabase()方法,以只读方式打开数据库。

 

 

 

 

 

 

 

要在 Android 应用程序中使用 SQLite 数据库,您需要做以下几个步骤: 1. 创建一个 SQLiteOpenHelper 类,以便打开或创建数据库。 2. 定义数据库模式,包括表和列的名称。 3. 在您的应用程序中定义 CRUD 操作(创建、读取、更新和删除)以操纵数据库。 4. 调用 SQLiteOpenHelper 对象的 getWritableDatabase() 或 getReadableDatabase() 方法来打开或创建数据库。 下面是一个简单的例子,演示如何在 Android 应用程序中使用 SQLite 数据库: ``` public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "myTable"; private static final String COLUMN_ID = "_id"; private static final String COLUMN_NAME = "name"; private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT)"; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } public void insertData(String name) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); db.insert(TABLE_NAME, null, values); db.close(); } public List<String> getAllData() { List<String> data = new ArrayList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex(COLUMN_NAME)); data.add(name); } while (cursor.moveToNext()); } cursor.close(); db.close(); return data; } } ``` 在上面的代码中,我们定义了一个 MyDatabaseHelper 类,它继承自 SQLiteOpenHelper 类。我们还定义了一个数据库模式,包括一个名为 myTable 的表和两个列。我们还实现了 CRUD 操作,以操纵数据库。最后,在 MyDatabaseHelper 类中,我们还覆盖了 onCreate() 和 onUpgrade() 方法,以打开或创建数据库。 要在应用程序中使用这个数据库,您只需要创建一个 MyDatabaseHelper 对象,并调用 insertData() 和 getAllData() 方法,如下所示: ``` MyDatabaseHelper dbHelper = new MyDatabaseHelper(context); dbHelper.insertData("John"); List<String> data = dbHelper.getAllData(); ``` 在上面的代码中,我们创建了一个 MyDatabaseHelper 对象,并调用 insertData() 方法,将 "John" 插入数据库中。然后,我们调用 getAllData() 方法,获取数据库中存储的所有数据,并将它们存储在一个 List<String> 中。 这是一个简单的例子,演示了如何在 Android 应用程序中使用 SQLite 数据库。您可以根据需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值