在移动应用开发中,数据存储一直是一个重要的问题。而且在App的功能实现中,往往需要在本地进行数据的存储和管理。Android中有许多的本地数据存储方式,其中SQLite数据库是常见的一种。
一、什么是SQLite数据库
SQLite是一种轻量级的数据库,它是一个不需要独立的服务器进程的库函数。它所支持的数据类型有NULL、INTEGER、REAL、TEXT和BLOB,同时也保证了数据的正确性和安全性。SQLite可以用在任何一个需要本地数据存储的项目中,例如:Android、iOS等移动App应用,也可作为单机模式下的一种轻量级数据库。
二、SQLite数据库的使用
在Android中,SQLite数据库的使用十分的简单。使用SQLite首先需要先确定数据表的字段及对应数据类型。(这里以一个学生表为例,字段包括id、name、gender、age、phone)
“`
CREATE TABLE student(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20),
gender VARCHAR(5),
age INTEGER,
phone CHAR(11)
);
“`
在Android中SQLite的使用,可以选择使用原始SQL语句来创建SQLite数据库,也可以使用SQLiteOpenHelper类来创建SQLite数据库。
1.使用原始SQL语句创建
(1)创建SQLiteOpenHelper类,如下所示:
“`
public class MySQLiteHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = “student.db”;
public static final int DATABASE_VERSION = 1;
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
db.execSQL(“CREATE TABLE student(” +
“id INTEGER PRIMARY KEY AUTOINCREMENT,” +
“name VARCHAR(20),” +
“gender VARCHAR(5),” +
“age INTEGER,” +
“phone CHAR(11))”);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS student”);
onCreate(db);
}
}
“`
(2)在需要使用的Activity中创建MySQLiteHelper实例,并调用 getWritableDatabase() 或 getReadableDatabase() 方法即可。
“`
MySQLiteHelper helper = new MySQLiteHelper(this);
SQLiteDatabase db = helper.getWritableDatabase(); // 获取写对象
“`
这里需要注意的是,如果数据库不存在则自动创建,如果存在,则直接打开。
2.使用SQLiteOpenHelper类创建
(1)定义需要创建的表,并将其写到onCreate()中,如下所示:
“`
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = “create table student (“
+ “id integer primary key autoincrement, “
+ “name text, “
+ “gender text, “
+ “age integer, “
+ “phone char(11) )”;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
“`
(2)声明MyDataBaseHelper实例,如下所示:
“`
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, “student.db”, null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
“`
这样我们就建立起了一个SQLite数据库。可以通过db.rawQuery()方法进行数据的存储和管理。
三、SQLite数据库的数据操作
1.添加数据
要向表中添加数据,可以使用SQL语句来实现,也可以使用框架提供的API实现。
(1)使用SQL语句添加数据,如下所示:
“`
String sql = “insert into student(id,name,gender,age,phone) values(null,?,?,?,?)”;
db.execSQL(sql, new Object[]{“小明”,”男”,15,”13111112222″});
“`
通过 ? 占位符将数据进行占位,然后使用 Object 数组来传递数据,其中 ? 的个数应该与字段的个数相同。
(2)使用框架提供的API添加数据,如下所示:
“`
ContentValues values = new ContentValues();
values.put(“name”, “小明”);
values.put(“gender”, “男”);
values.put(“age”, “15”);
values.put(“phone”, “13111112222”);
db.insert(“student”, null, values);
“`
2.查询数据
查询数据同样也是使用SQL语句,可以选择返回结果为Cursor对象的查询方式,也可以选择将结果封装在一个JavaBean对象中返回。我们这里使用返回Cursor的查询方式。如下所示:
“`
String sql = “select * from student”;
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex(“id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
String gender = cursor.getString(cursor.getColumnIndex(“gender”));
int age = cursor.getInt(cursor.getColumnIndex(“age”));
String phone = cursor.getString(cursor.getColumnIndex(“phone”));
// 将查询到的数据打印出来
Log.d(TAG, “queryData: ” + “id==” + id + ” 类型==” + name + ” 年龄==” + age + ” ==” + phone);
} while (cursor.moveToNext());
}
cursor.close();
“`
3.删除数据
删除数据同样也是使用SQL语句,如下所示:
“`
db.delete(“student”, “id=?”, new String[]{“1”});
“`
这里的 “student” 表示需要操作的数据表名, “id=?” 表示需要删除的记录的id值,如果有多个记录需要删除,可以使用分号分隔。delete() 的第三个参数表示此处条件的取值,放在一个数组中,如果有多个条件,同样也可以使用分号分隔。其中,?为占位符,用于防止SQL注入攻击。
4.更新数据
更新数据同样也是使用SQL语句,如下所示:
“`
ContentValues values = new ContentValues();
values.put(“name”, “张三”);
db.update(“student”, values, “id=?”, new String[]{“1”});
“`
update() 方法的之一个参数同样也是需要更新的数据表名,第二个参数是一个ContentValues对象,这个对象中需要存放更新后的数据的键值对,第三个参数和删除数据中的一样,表示更新的条件。
四、
本文主要介绍了在Android开发中如何使用SQLite数据库进行本地数据存储的创建、数据操作等流程。SQLite作为一种轻量级数据库,操作简单,同时相较与其他数据库产品,SQLite更加灵活,支持数据复制和并发访问等功能。因此,在Android丰富的生态圈中,SQLite数据库得到了广泛的应用。希望本文所介绍的SQLite数据库操作可以帮助到读者,更好地解决数据存储的问题。
相关问题拓展阅读:
- android SQLite数据库操作问题!!创建数据库在data下找不到!求指导~~~
- android新建的SQLite数据库无法使用
- Android中SQLite创建数据库时,之一次还好,第二次修改表后出现了图中的错误,求大神指教!!
android SQLite数据库操作问题!!创建数据库在data下找不到!求指导~~~
在data/data/你的项目的主函数的包名锋兆下面有个database的目录下面找啊。如果没有文件你的创建数据库的代码有问题了。或者你只是写代码了没在任何地方调用你的数据库侍基羡的那个类,你可以简单的创建一个表老拍 插入或者删除随便操作一下就会有的。
你橘宽让用的是巧祥手机测试的圆局还是模拟器~~??
手机一般都有保护,打不开data的,我手机note2,我点击前面的+就打不开
一般在File Explorer data目录下为空的话,不知道你是不是一边插着芹埋手机设备,一边又在开模拟器看data目录下数据,如果是这样,把手机和模拟器都关配雀了,然后把手机拔了,再用模拟器重新运行项目,应该就可以看到了。嫌卖蚂
android新建的SQLite数据库无法使用
SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使慧誉用,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间枯薯,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
在android中当需要操作SQLite数据库的时候需要得到一个SQLiteOpenHelper对象,而SQLiteOpenHelper是一个抽象类,用户需要继承这个类,并实现该类中的一些方法。
1、继承SQLiteOpenHelper之后就拥有了以下两个方法:
◆getReadableDatabase() 创建或者打开一个查询数据库
◆getWritableDatabase()创建或者打开一个可写数据库
◆他们都会返回SQLiteDatabase对象,用户通过得到的SQLiteDatabase对象进行后续操作
2、同时用户还可以覆盖以下回调函数,再对数据库进行操作的时候回调以下方法:
◆onCreate(SQLiteDatabase):在数据库之一次创建的时候会调用这个方法,一般我们在这个方法里边创建数据库表。
◆onUpgrade(SQLiteDatabase,int,int):当数据库需要修改的时候,Android系统会主动的调用这个方法。一般我们在这个方法里边删除数据库表,并建立新的数据库表,当然是否还需要做其他的操作,完全没碧者取决于应用程序的需求。
◆onOpen(SQLiteDatabase):这是当打开数据库时的回调函数,一般也不会用到。
问对人了,刘继贺,应当对的有``
Android中SQLite创建数据库时,之一次还好,第二次修改表后出现了图中的错误,求大神指教!!
安卓对SQLite表中的主键字段要拦慎腊求比较苛刻,必孝皮须使用 _id
算简滑是比较霸道吧。不过我们也没办法。。呵呵
你改改试一试, 我上次也是遇到这样的问题,调了半天都没解决。查API才发现的。希望能帮到你
android创建sqlite数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android创建sqlite数据库,Android轻松打造本地数据存储——SQLite数据库创建,android SQLite数据库操作问题!!创建数据库在data下找不到!求指导~~~,android新建的SQLite数据库无法使用,Android中SQLite创建数据库时,之一次还好,第二次修改表后出现了图中的错误,求大神指教!!的信息别忘了在本站进行查找喔。