数据库SQLite
行吧,来说说今天学的东西,之前呢我们学习使用过mysql数据库,掌握了sql语言的基本使用,在安卓中使用的数据库是sqlite,但语言是一样的
在这里呢就主要弄一弄手机数据库的基本操作
-SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件
如何创建数据库和数据表
-
1.SQLiteOpenHelper帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。 SQLiteOpenHelper 是一个抽象类
-
2.SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑
-
3.SQLiteOpenHelper中还有两个非常重要的实例方法, getReadableDatabase()和getWritableDatabase()这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常
public class MySqliteHelper extends SQLiteOpenHelper {
public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20),age integer,url varchar(200))");
db.execSQL("insert into user values(null,'name1',19,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name2',21,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name3',13,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name4',14,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name5',87,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name6',19,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name7',13,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name8',31,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name9',24,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
db.execSQL("insert into user values(null,'name10',11,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
上面是创建过程,初始化数据
然后让我们来看一下使用,如何获得数据库对象
MySqliteHelper mySqliteHelper =new MySqliteHelper(MainActivity.this,"shujuku",null,1);
SQLiteDatabase sqldb = mySqliteHelper.getWritableDatabase();
拿到对象之后就是增删改查的操作了
- 1.增
-
1.1 第一种方法
-
sqldb.execSql(insert into 表名 values(值1,值2....)) 1.2第二种方法 ContentValue c = new ContentValue (); c.put(列名,值); sqldb.insert(表名,不添加属性的列名,ContentValue对象)
- 2.删
-
2.1 第一种方法
-
sqldb.execSql(delete from 表名 where....) 2.2第二种方法 sqldb.delete(表名,条件,String数组(对应的值))
- 3.改
-
-
3.1 第一种方法
-
-
sqldb.execSql(uptade 表名 set id = 新值 where....) 3.2第二种方法 ContentValue c = new ContentValue (); c.put(列名,值); sqldb.update(表名,新值语句,新值ContentValue对象,条件,条件对应值String[])
- 4.查
-
-
4.1 第一种方法
-
-
sqldb.rawquery(select * from 表明) ==》 cuscor 4.2第二种方法 sqldb.query(“表名”,要查列String[],条件,条件对应值string[],分组,having,排序,limit) ==》 cuscor
while (cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
str = cursor.getString(cursor.getColumnIndex("url"));
bug = getBytes(str);
Log.i("###", "getUsersMethod1: "+bug.length);
Bitmap bitmap = BitmapFactory.decodeByteArray(bug, 0, bug.length);
}
今天的东西不知道该怎么展示,反正就是这个了啦