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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
package
my.db;
import
java.io.Serializable;
import
java.math.BigInteger;
import
java.sql.*;
import
java.util.*;
import
my.cache.CacheManager;
import
net.oschina.Configurations;
import
org.apache.commons.dbutils.QueryRunner;
import
org.apache.commons.dbutils.handlers.*;
import
org.apache.commons.lang.ArrayUtils;
/**
*
数据库查询助手
*
@author Winter Lau<br> */
@SuppressWarnings ( "unchecked" )
public
class
QueryHelper {
private
final
static
QueryRunner _g_runner = new
QueryRunner();
private
final
static
ColumnListHandler _g_columnListHandler = new
ColumnListHandler(){
@Override
protected
Object handleRow(ResultSet rs) throws
SQLException {
Object
obj = super .handleRow(rs);
if (obj
instanceof
BigInteger)
return
((BigInteger)obj).longValue();
return
obj;
}
};
private
final
static
ScalarHandler _g_scaleHandler = new
ScalarHandler(){
@Override
public
Object handle(ResultSet rs) throws
SQLException {
Object
obj = super .handle(rs);
if (obj
instanceof
BigInteger)
return
((BigInteger)obj).longValue();
热心网友
时间:2022-04-30 20:39
Android数据库操作类实例 实体类:UserInfo.java package my.db; import java.io.Serializable; import android.graphics.drawable.Drawable; public class UserInfo implements Serializable { public static final String ID = "_id"; public static final String USERID = "userId"; public static final String TOKEN = "token"; public static final String TOKENSECRET = "tokenSecret"; public static final String USERNAME = "userName"; public static final String USERICON = "userIcon"; private String id; private String userId; // 用户id private String token; private String tokenSecret; private String userName; private Drawable userIcon; //getter and setter省略 } SqliteHelper类: package my.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class SqliteHelper extends SQLiteOpenHelper{ //用来保存UserID、Access Token、Access Secret的表名 public static final String TB_NAME= "users"; public SqliteHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } //创建表 @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "CREATE TABLE IF NOT EXISTS "+ TB_NAME+ "("+ UserInfo. ID+ " integer primary key,"+ UserInfo. USERID+ " varchar,"+ UserInfo. TOKEN+ " varchar,"+ UserInfo. TOKENSECRET+ " varchar,"+ UserInfo. USERNAME+ " varchar,"+ UserInfo. USERICON+ " blob"+ ")" ); Log. e("Database" ,"onCreate" ); } //更新表 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL( "DROP TABLE IF EXISTS " + TB_NAME ); onCreate(db); Log. e("Database" ,"onUpgrade" ); } //更新列 public void updateColumn(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn){ try{ db.execSQL( "ALTER TABLE " + TB_NAME + " CHANGE " + oldColumn + " "+ newColumn + " " + typeColumn ); } catch(Exception e){ e.printStackTrace(); } } } CRUD类DataHelper: package my.db; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.util.Log; public class DataHelper { // 数据库名称 private static String DB_NAME = "weibo.db"; // 数据库版本 private static int DB_VERSION = 2; private SQLiteDatabase db; private SqliteHelper dbHelper; public DataHelper(Context context) { dbHelper = new SqliteHelper(context, DB_NAME, null, DB_VERSION ); db = dbHelper.getWritableDatabase(); } public void Close() { db.close(); dbHelper.close(); } // 获取users表中的UserID、Access Token、Access Secret的记录 public List<UserInfo> GetUserList(Boolean isSimple) { List<UserInfo> userList = new ArrayList<UserInfo>(); Cursor cursor = db.query(SqliteHelper. TB_NAME, null, null , null, null, null, UserInfo. ID + " DESC"); cursor.moveToFirst(); while (!cursor.isAfterLast() && (cursor.getString(1) != null )) { UserInfo user = new UserInfo(); user.setId(cursor.getString(0)); user.setUserId(cursor.getString(1)); user.setToken(cursor.getString(2)); user.setTokenSecret(cursor.getString(3)); if (!isSimple) { user.setUserName(cursor.getString(4)); ByteArrayInputStream stream = new ByteArrayInputStream(cursor.getBlob(5)); Drawable icon = Drawable.createFromStream(stream, "image"); user.setUserIcon(icon); } userList.add(user); cursor.moveToNext(); } cursor.close(); return userList; } // 判断users表中的是否包含某个UserID的记录 public Boolean HaveUserInfo(String UserId) { Boolean b = false; Cursor cursor = db.query(SqliteHelper. TB_NAME, null, UserInfo.USERID + "=?", new String[]{UserId}, null, null, null ); b = cursor.moveToFirst(); Log. e("HaveUserInfo", b.toString()); cursor.close(); return b; } // 更新users表的记录,根据UserId更新用户昵称和用户图标 public int UpdateUserInfo(String userName, Bitmap userIcon, String UserId) { ContentValues values = new ContentValues(); values.put(UserInfo. USERNAME, userName); // BLOB类型 final ByteArrayOutputStream os = new ByteArrayOutputStream(); // 将Bitmap压缩成PNG编码,质量为100%存储 userIcon.compress(Bitmap.CompressFormat. PNG, 100, os); // 构造SQLite的Content对象,这里也可以使用raw values.put(UserInfo. USERICON, os.toByteArray()); int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "=?" , new String[]{UserId}); Log. e("UpdateUserInfo2", id + ""); return id; } // 更新users表的记录 public int UpdateUserInfo(UserInfo user) { ContentValues values = new ContentValues(); values.put(UserInfo. USERID, user.getUserId()); values.put(UserInfo. TOKEN, user.getToken()); values.put(UserInfo. TOKENSECRET, user.getTokenSecret()); int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "=" + user.getUserId(), null); Log. e("UpdateUserInfo", id + ""); return id; } // 添加users表的记录 public Long SaveUserInfo(UserInfo user) { ContentValues values = new ContentValues(); values.put(UserInfo. USERID, user.getUserId()); values.put(UserInfo. TOKEN, user.getToken()); values.put(UserInfo. TOKENSECRET, user.getTokenSecret()); Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values); Log. e("SaveUserInfo", uid + ""); return uid; } // 添加users表的记录 public Long SaveUserInfo(UserInfo user, byte[] icon) { ContentValues values = new ContentValues(); values.put(UserInfo. USERID, user.getUserId()); values.put(UserInfo. USERNAME, user.getUserName()); values.put(UserInfo. TOKEN, user.getToken()); values.put(UserInfo. TOKENSECRET, user.getTokenSecret()); if(icon!= null){ values.put(UserInfo. USERICON, icon); } Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values); Log. e("SaveUserInfo", uid + ""); return uid; } // 删除users表的记录 public int DelUserInfo(String UserId) { int id = db.delete(SqliteHelper. TB_NAME, UserInfo. USERID + "=?", new String[]{UserId}); Log. e("DelUserInfo", id + ""); return id; } public static UserInfo getUserByName(String userName,List<UserInfo> userList){ UserInfo userInfo = null; int size = userList.size(); for( int i=0;i<size;i++){ if(userName.equals(userList.get(i).getUserName())){ userInfo = userList.get(i); break; } } return userInfo; } }
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
|