上一篇文章列出了在Android上对数据库进行操作的基本流程,及简单的增,删,查的方法。这一篇实现添加用户,查找用户的方法调用。UserInfo类请参考上一篇文章。
在Android中,我们通过ContentValues往数据库中传值,屏蔽了复杂了insert语句,十分方便。首先结合Android:SNS客户端开发二:获取账号资料中,我们得到的用户信息,声明一个ContentValue对象。代码:
ContentValues values = new ContentValues(); values.put("userid", user_id); values.put("name", name); values.put("nickname", screen_name); values.put("access_token", access_token); values.put("access_secret", access_secret); values.put("type", "sina"); values.put("icon", ImageUtil.getBytesFromUrl(headUrl));
以上的各个字段信息都是在获取账号资料放中得到的。然后我们调用上篇文章中DBOperate中的insert方法,将用户信息插入到数据库中。
if (!dboperate.isExist(values)) { dboperate.insertUser(values); Toast.makeText(context, "添加账号成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, "该账号已存在", Toast.LENGTH_LONG).show(); }
先判断用户数据是否已经在数据库里,如果不存在则插入到数据库中,若存在则显示账号已存在。
那么到这里,我们的数据库操作基本就完成了。下一篇会开始介绍发送一篇微博的界面设计。
补充:我们可以看到在第一段代码中有这么一句话
values.put("icon", ImageUtil.getBytesFromUrl(headUrl));
在上一篇中,我们在建立user表时,将icon(头像)的数据类型设置为blob,也就是二进制字段。那么我们在将用户头像存入数据库的时候,需要从网络上拉取到用户头像文件,并转化成二进制信息之后再存入数据库。附上ImageUtil中的getBytesFromUrl方法代码:
public class ImageUtil { public static byte[] getBytesFromUrl(String url) throws Exception { return readInputStream(getRequest(url)); } public static byte[] readInputStream(InputStream inStream) throws Exception { ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } outSteam.close(); inStream.close(); return outSteam.toByteArray(); } public static InputStream getRequest(String path) throws Exception { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); if (conn.getResponseCode() == 200) { return conn.getInputStream(); } return null; } }