今天使用sqlite来创建一张表的时候发现一个问题
sql语句之间一定要有空格和逗号,不然会报错不能创建表的。
今天也学到了几个关于sqlite的相关类的使用以及DAO和JAVEBEAN技术相结合的使用
记录一些重点代码吧。
首先是sqliteOpenHelper这个类,这个类是用于管理数据库的创建和版本更新的工具类,其中有2个重要的方法
onCreate()和onUpgrade(),第一个方法用来创建数据库,第二个方法是更新数据库的,也就是开发软件时,版本更新了,就调用这个方法
但是在更新时也要同时再次调用onCreate()这个方法来从新创建数据库(因为数据库中的数据已经改变,就需要重新创建),当然还有一个细节,当集成sqliteOpenHelper这个类时必须要实现它的构造方法,构造器就是用来创建实例的,这样就可以到其他的类中使用这个类以及调用其方法。
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);
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());
以上就是今天所学的一些知识,自己总结的一些,让别人看估计都看不懂
原文链接:https://www.f2er.com/sqlite/201137.html