开源学习 百度推送实战项目 友聊 (六)

这篇文章是 ”友聊“ 开源项目学习系列的第六篇,前五篇文章请查看这里:

友聊 学习记录(一)

友聊 学习记录(二)

友聊 学习记录(三)

友聊 学习记录(四)

友聊 学习记录(五)

主要记录下友聊项目中 数据库SQLite 使用和处理。

推荐两个SQLite 教程的网站,**SQLite教程(一)
和SQLite 教程 (二)** 。在之前的项目中,一直都没有使用过数据库,借助这个机会,学习下数据库的相关知识。

实体类Bean 的设计。这里用到的实体类有Message , MessageItem ,RecentItem ,User 。Message 和 MessageItem 的区别不是很清楚,数据库里面存放的是MessageItem。RecentItem ,最近联系人;User 保存用户信息。

数据库操作类有: MessageDB, 对消息的管理,保存,获取,新接收的未读消息。

RecentDB, 最近联系人,保存,获取,删除,排序。

UserDB, 联系人的管理,增删查改,排序都要有。

下面就主要看下UserDB 里面的代码,其他几个文件类似。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// UserDB 里面有一个UserDBHelper 辅助类

private UserDBHelper helper;

    public UserDB(Context context) {
        helper = new UserDBHelper(context);
    }

//UserDBHelper 类定义

public class UserDBHelper extends SQLiteOpenHelper{
    public static final String USER_DBNAME = "user.db";
    public UserDBHelper(Context context) {
        super(context, USER_DBNAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE table IF NOT EXISTS user"
                + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, userId TEXT, nick TEXT, img TEXT, channelId TEXT, _group TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("ALTER TABLE user ADD COLUMN other TEXT");
    }

根据用户id ,查询用户信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public User selectInfo(String userId) {
        User u = new User();
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor c = db.rawQuery("select * from user where userId=?",
                new String[] { userId + "" });
        if (c.moveToFirst()) {
            u.setHeadIcon(c.getInt(c.getColumnIndex("img")));
            u.setNick(c.getString(c.getColumnIndex("nick")));
            u.setChannelId(c.getString(c.getColumnIndex("channelId")));
            u.setGroup(c.getInt(c.getColumnIndex("_group")));
        } else {
            return null;
        }
        return u;
    }

添加一个用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public void addUser(User u) {
        // 如果已经添加
        if (selectInfo(u.getUserId()) != null) {
            // 更新数据 
            update(u);
            return;
        }
        // 添加数据
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL(
                "insert into user (userId,nick,img,channelId,_group) values(?,?,?,?,?)",
                new Object[] { u.getUserId(), u.getNick(), u.getHeadIcon(),
                        u.getChannelId(), u.getGroup() });
        db.close();

    }

添加多个用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public void addUser(List<User> list) {
        SQLiteDatabase db = helper.getWritableDatabase();
        for (User u : list) {
            // **木有查询是否存在判断**
            db.execSQL(
                    "insert into user (userId,nick,img,channelId,_group) values(?,?,?,?,?)",
                    new Object[] { u.getUserId(), u.getNick(), u.getHeadIcon(),
                            u.getChannelId(), u.getGroup() });
        }
        db.close();
    }

更新用户信息

1
2
3
4
5
6
7
8
public void update(User u) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL(
                "update user set nick=?,img=?,_group=? where userId=?",
                new Object[] { u.getNick(), u.getHeadIcon(), u.getGroup(),
                        u.getUserId() });
        db.close();
    }

获取最新用户信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public User getLastUser() {
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor c = db.rawQuery("select * from user", null);
        User u = new User();
        while (c.moveToLast()) {
            u.setUserId(c.getString(c.getColumnIndex("userId")));
            u.setNick(c.getString(c.getColumnIndex("nick")));
            u.setHeadIcon(c.getInt(c.getColumnIndex("img")));
            u.setChannelId(c.getString(c.getColumnIndex("channelId")));
            u.setGroup(c.getInt(c.getColumnIndex("_group")));
        }
        c.close();
        db.close();
        return u;
    }

获取所有用户信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public List<User> getUser() {
        SQLiteDatabase db = helper.getWritableDatabase();
        List<User> list = new LinkedList<User>();
        Cursor c = db.rawQuery("select * from user", null);
        while (c.moveToNext()) {
            User u = new User();
            u.setUserId(c.getString(c.getColumnIndex("userId")));
            u.setNick(c.getString(c.getColumnIndex("nick")));
            u.setHeadIcon(c.getInt(c.getColumnIndex("img")));
            u.setChannelId(c.getString(c.getColumnIndex("channelId")));
            u.setGroup(c.getInt(c.getColumnIndex("_group")));
            list.add(u);
        }
        c.close();
        db.close();
        return list;
    }

删除单个用户信息

1
2
3
4
5
6
public void delUser(User u) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("delete from user where userId=?",
                new Object[] { u.getUserId() });
        db.close();
    }

删除所有用户信息

1
2
3
4
5
public void delete() {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("delete from user");
        db.close();
    }

数据库的操作,主要还是增删查改,SQLite 的其他操作,我们一起看教程!

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: imesong

原文地址: http://my.eoe.cn/imesong/archive/21830.html

你可能感兴趣的:(百度,SlidingMenu,云推送)