開源学習百度推送実戦プロジェクト友談(六)
39645 ワード
この文章は「友聊」オープンソースプロジェクト学習シリーズの6編目で、最初の5編はここを見てください.
友談学習記録(一)
友談学習記録(二)
友談学習記録(三)
友談学習記録(四)
友談学習記録(五)
主に友談プロジェクトにおけるデータベースSQLiteの使用と処理を記録する.
2つのSQLiteチュートリアルのウェブサイト、**SQLiteチュートリアル(1)とSQLiteチュートリアル(2)**をお勧めします.これまでのプロジェクトでは、データベースを使用したことがありませんでした.この機会を利用して、データベースに関する知識を学びます.
エンティティークラスBeanの設計.ここで使用するエンティティークラスには、Message,MessageItem,RecentItem,Userがあります.MessageとMessageItemの違いはよくわかりませんが、データベースにはMessageItemが格納されています.RecentItem、最近の連絡先;Userはユーザー情報を保存します.
データベース操作クラスには、MessageDB、メッセージの管理、保存、取得、新規受信の未読メッセージがあります.
RecentDB、最近の連絡先、保存、取得、削除、ソート.
UserDB、連絡先の管理、削除・変更、並べ替えが必要です.
以下は主にUserDBの中のコードを見てみましょう.他のいくつかのファイルは似ています.
ユーザidに基づいてユーザ情報を照会する
ユーザーの追加
複数のユーザーの追加
ユーザー情報の更新
最新ユーザー情報の取得
すべてのユーザー情報の取得
個々のユーザー情報の削除
すべてのユーザー情報を削除
データベースの操作は、主に削除して変更します.SQLiteの他の操作は、チュートリアルを見てみましょう.
声明:eoe文章の著作権は作者に属して、法律の保護を受けて、転載する時必ずハイパーリンクの形式で以下の情報を添付してください
原文作者:imesong
原文住所:http://my.eoe.cn/imesong/archive/21830.html
友談学習記録(一)
友談学習記録(二)
友談学習記録(三)
友談学習記録(四)
友談学習記録(五)
主に友談プロジェクトにおけるデータベースSQLiteの使用と処理を記録する.
2つのSQLiteチュートリアルのウェブサイト、**SQLiteチュートリアル(1)とSQLiteチュートリアル(2)**をお勧めします.これまでのプロジェクトでは、データベースを使用したことがありませんでした.この機会を利用して、データベースに関する知識を学びます.
エンティティークラス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