上一篇文章列出了在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;
}
}