sqlite相关技术记录

来源:互联网 发布:淘宝职业买手 编辑:程序博客网 时间:2024/05/29 07:00

今天使用SQLite来创建一张表的时候发现一个问题

sql语句之间一定要有空格和逗号,不然会报错不能创建表的。

今天也学到了几个关于SQLite的相关类的使用以及DAO和JAVEBEAN技术相结合的使用

记录一些重点代码吧。

首先是SQLiteOpenHelper这个类,这个类是用于管理数据库的创建和版本更新的工具类,其中有2个重要的方法

onCreate()和onUpgrade(),第一个方法用来创建数据库,第二个方法是更新数据库的,也就是开发软件时,版本更新了,就调用这个方法

但是在更新时也要同时再次调用onCreate()这个方法来从新创建数据库(因为数据库中的数据已经改变,就需要重新创建),当然还有一个细节,当集成SQLiteOpenHelper这个类时必须要实现它的构造方法,构造器就是用来创建实例的,这样就可以到其他的类中使用这个类以及调用其方法。

SQLiteOpenHelper还有2个重要的方法:

1,getWritableDatabase()用来创建一张表然后向其中插入数据,关键代码如下        

                db = dbhelp.getWritableDatabase();
ContentValues values = new ContentValues();
// 把values插入到key鍵值中
values.put(DbInfo.Table.USER_ID, user.getUesr_id());
values.put(DbInfo.Table.USER_NAME, user.getUser_name());

注:db属于SQLiteDataBase中的对象

2,getReadableDatabase()用来读取数据库中表的信息,然后就可以对表中的数据进行查找,删除等操作了

关键代码如下:

   db = dbhelp.getReadableDatabase();
List<UserBean> userlist = null;
UserBean user = null;
// columns 想要显示的列,若为空则返回所有列,不建议设置为空,如果不是返回所有列
Cursor cursor = db.query(DbInfo.Table.TABLE_NAME, columns, null, null,
null, null, null);
if (cursor != null && cursor.getCount() > 0) {
userlist = new ArrayList<UserBean>(cursor.getCount());

                      userlist.setString("sqlite");

读取数据的话,肯定也要用到一个类,游标工厂了,也就是Cursor这个类,它有一个query()方法,里面包含的五个参数一般只需要前2个,后面的置为null即可。

这里创建了一个list集合用来保存数据,还有userbean要用null进行实例化,不然不能添加数据(因为没有实例化,就没有分配内存空间,也就不能添加数据了)。

至于SQLiteDatabase这个类一般是和SQLiteOpenHelper结合使用的,它是用来管理数据库的接口,这个类提供了create(),insert(),delete(),查询(Retrieve)、更新(Update)这些方法。

数据库中添加的数据不仅只有文字,还有音频图片等文件,这里我只写存储图片的方法

图片我将其数据类型设置为blob(二进制对象),通过转换将二进制字节码存入缓冲区,然后利用IO流读取缓冲区中的数据,读完后再用BitmapDrawable中的方法将其压缩,最后存入数据表中,代码如下:

               ByteArrayOutputStream os = new ByteArrayOutputStream();
BitmapDrawable bit = (BitmapDrawable) user.getUser_head();
// 压缩图片,把图片压到 os流中
bit.getBitmap().compress(CompressFormat.JPEG, 100, os);
                //用IO从缓冲区中读取数据之后要转换成字节流
values.put("图片名", os.toByteArray());

以上就是今天所学的一些知识,自己总结的一些,让别人看估计都看不懂

原创粉丝点击