Android:SNS客户端开发四:数据库操作(二)

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

}

 

你可能感兴趣的:(android)