非淡泊无以明志,非宁静无以致远。这篇文章主要讲述关于android中数据库的创建以及基础的增删改查的相应操作相关的知识,希望能为你提供帮助。
这里主要是掌握一些基本的相应的知识,具体的是阿金是等到明天在进行。
相应的知识点如下:
对于数据库中的一些常识。SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且在保存数据时,支持null(零) 、integer (整数)、real (浮点数字) 、text (字符串文本)和blob(二进制对象)5种数据类型。但实际上SQLite也接收varchar(n)、 char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转换成对应的5种数据类型。因此,可以将各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型
SqliteOpenHelper的用法:
该类的方法:
1、getReadableDatabase()
创建或者打开一个可读写的数据库,如果出现问题(磁盘满等),则打开一个只读的数据库。
2、getWritableDatabase()
获得一个可读写的数据库。如果磁盘满则会抛异常。
3、onCreate(SQLiteDatabase db)
只有第一次创建这个数据库的时候调用。一般在这个方法中创建数据的相应表。
4、onOpen(SQLiteDatabase db)
当每次打开数据库的时候都会调用。这个方法很少使用
5、onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
当升级数据库即数据库的版本号发生改变的时候调用,一般如果需要修改表结构就写在这里.
//db.execSQL(“
alert
表名
add
列名列数据类型”
);
6、close()
关闭打开的所有数据库对象
二、进行增加数据的相关操作是:
通过getWritableDatabase()方 法得到SQLiteDatabase对象,然后获得ContentValues对象并将数据添加到ContentValues对象中,最后调用inser()方法将数据插入到person表中。
insert()方法接收3个参数,第一个参数是数据表的名称,第二个参数表示如果发现将要插入的行为空行时,会将这个列名的值设为null,第三个参数为ContentValues对象。ContentValues类类似于Map类,通过键值对的形式存入数据,这里的key表示插入数据的列名,value 表示要插入的数据。
需要注意的是,使用完SQLiteDatabase对象后定要调用close()方法关闭,否则数据库连接会一直存在,不断消耗内存,当系统内存不足时将获取不到SQLiteDatabase对象,并且会报出数据库未关闭异常。
三、修改相应数据的注意事项
通过SQLiteDatebase对象db调用update()方法用来修改数据库中的数据,update()方法接收4个参数,第一个参数表示表名,第二个参数接收一个ContentValues对象,第三个参数可选择where语句,第四个参数表示whereClause语句中的占位参数列表,这些字符串会替换掉where条件中的 " ? "。
四、查询数据的先关操作是
在进行数据查询时使用的是SQLiteDatabase的query0方法,该方法返回的是一个行数集合Cursor。 Cursor 是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等,通过这些方法可以获取集合中的属性值以及序号等。
需要注意的是,在使用完Cursor对象后,一定要及时关闭,否则会造成内存泄露。下面介绍如何使用SQLiteDatabase的query()方法查询数据,
这种操作方法类似于执行SQL语句 (语法和SQL server类似)。
1. 增加一条数据
?
1 | db.execSQL( "insert into perosn (name, price) values(?,?)" , new String[]{name,price}) |
?
1 | db.execSQL( "update person set price =? where name =?" , new String[]{price,name});
|
?
1 | db.execSQL( "delete from person where _id = ?" , new String[]{id});
|
?
1 | Cursor cursor = db.rawQuery( "select _id,name,price from person where id =?" , new String[]{id});
|
创建数据库的基本代码如下:
public class SqliteHelper extends SQLiteOpenHelper{/** * 1.上下文 * 2.数据库名字 * 3.工厂游标 * 4.版本号 * @param context */ public SqliteHelper(Context context) { super(context, "Person.db", null, 1); // TODO Auto-generated constructor stub } //创建 创建表 只要创建成功 只会执行一次 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table person(id integer primary key autoincrement," + "name text," + "sex text)"); }
对于数据库方面的增删改查的相应代码如下:
//添加 public boolean add(String name,String age){ContentValues values = new ContentValues(); //1.key 字段名 2.要进行添加的值 values.put("name", name); values.put("age", age); //1. 表名 2.要进行添加的列 3. 添加的值 long insert = sb.insert("user", null, values ); if(insert!=-1){ return true; }else{ return false; }}//查询 public String select(){ /** * table, 表名 * columns, 查询列 * selection, 条件 * selectionArgs,条件的值 * groupBy,组查询 * having, 子查询 * orderBy 顺序 升序 降序 */ Cursor query = sb.query("user", null, null, null, null, null, null); StringBuffer stringBuffer = new StringBuffer(); while (query.moveToNext()) {String name = query.getString(query.getColumnIndex("name")); String age = query.getString(query.getColumnIndex("age")); stringBuffer.append(name+"----"+age); } return stringBuffer.toString(); }//删除 public boolean delete(String name){ /** * 1.表名 * 2.条件 * 3.条件的值 */ int delete = sb.delete("user", "name = ?", new String[]{name}); if(delete!=-1){ return true; }else{ return false; }} //修改public boolean update(String name,String age,String tj){/** * table, 表名 * values,要修改的值 * whereClause, 条件 * whereArgs 条件的值 */ ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); int update = sb.update("user", values, "name = ?", new String[]{tj}); if(update!=-1){ return true; }else{ return false; } } }
【关于android中数据库的创建以及基础的增删改查的相应操作】
推荐阅读
- Android学习04
- APP测试-耗电量测试
- Android开发之数据持久化存储三
- 7个称为系统管理员的服务器监视工具
- 11个有用的Windows系统知识,可作为系统管理员
- 如何修复virtualenv(在CentOS 6上找不到命令)
- Linux环境下的Oracle Weblogic 12c安装指南
- 帮助解决3个关键Web应用程序问题的工具
- 系统管理员必须了解的11个Linux性能命令