首页 > 代码库 > Android之数据库

Android之数据库

1DBAdapter类:?

?

1 package com.cnzcom.android.quickdial;

2

3 ?import android.content.ContentValues;

4 ?import android.content.Context;

5 import android.database.Cursor;

6 import android.database.SQLException;

7 import android.database.sqlite.SQLiteDatabase;

8 import android.database.sqlite.SQLiteOpenHelper;

9 import android.util.Log;

10

11 /**

12 *

13 * @author zhangjie

14 *

15 * 数据库相关操作的类

16 */

17 public class DBAdapter {

18 /**

19 * 数据库名

20 */

21 private static final String DATABASE_NAME = "quickdial.db";

22

23 /**

24 * 数据表名

25 */

26 private static final String DATABASE_TABLE = "quickdial";

27

28 /**

29 * 数据库版本

30 */

31 private static final int DATABASE_VERSION = 1;

32

33 /**

34 * key_id :主键

35 */

36 @SuppressWarnings("unused")

37 private static final String KEY_ID = "key_id";

38

39 /**

40 * position :位置信息,表示数据是第几项

41 */

42 private static final String POSITION = "position";

43

44 /**

45 * name :姓名

46 */

47 private static final String NAME = "name";

48

49 /**

50 * phone_number :电话号码

51 */

52 private static final String PHONE_NUMBER = "phone_number";

53

54 /**

55 * ip :是否ip播出

56 */

57 private static final String IP = "ip";

58

59 /**

60 *

61 */

62 private static final String DATABASE_CREATE =

63 "create table quickdial (key_id INTEGER PRIMARY KEY, "

64 + "position INTEGER, "

65 + "name TEXT, "

66 + "phone_number TEXT, "

67 + "ip INTEGER"

68 + ");";

69

70 /**

71 *

72 */

73 private final Context context;

74

75 /**

76 *

77 */

78 private DatabaseHelper DBHelper;

79

80 /**

81 *

82 */

83 private SQLiteDatabase db;

84

85 public DBAdapter(Context ctx) {

86 context = ctx;

87 DBHelper = new DatabaseHelper(context);

88

89

90 }

91

92 private static class DatabaseHelper extends SQLiteOpenHelper {

93 public DatabaseHelper(Context context) {

94 super(context, DATABASE_NAME, null, DATABASE_VERSION);

95 }

96

97 @Override

98 public void onCreate(SQLiteDatabase db) {

99 // TODO Auto-generated method stub

100 db.execSQL(DATABASE_CREATE);

101 }

102

103 @Override

104 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

105 // TODO Auto-generated method stub

106 db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);

107 onCreate(db);

108 }

109

110 }

111

112 /**

113 * 打开数据库

114 * @return

115 * @throws SQLException

116 */

117 public SQLiteDatabase open() throws SQLException

118 {

119 db = DBHelper.getWritableDatabase();

120

121 Cursor cursor = getAll();

122

123 if(cursor.getCount() == 0) {

124

125 Log.e("数据库为空", "插入数据");

126 /**

127 * 先使用假数据初始化数据库

128 */

129 for(int i = 0; i < 10; i++) {

130 insert(i, "", "", 0);

131 }

132 } else {

133 Log.e("数据库不为空", "读取数据");

134 }

135 cursor.close();

136

137 return db;

138 }

139

140 /**

141 * 关闭数据库

142 */

143 public void close()

144 {

145 DBHelper.close();

146 }

147

148 /**

149 * 向数据库中插入数据

150 */

151

152 public long insert(int position, String name, String phone_number, int ip) {

153

154 ContentValues initialValues = new ContentValues();

155 initialValues.put(POSITION, position);

156 initialValues.put(NAME, name);

157 initialValues.put(PHONE_NUMBER, phone_number);

158 initialValues.put(IP, ip);

159

160 return db.insert(DATABASE_TABLE, null, initialValues);

161 }

162

163 /**

164 * 删除数据,其实不是真正意义上的删除,而是将name = ""phone_number = ""ip = 0

165 */

166 public boolean delete(int position) {

167

168 ContentValues initialValues = new ContentValues();

169 initialValues.put(POSITION, position);

170 initialValues.put(NAME, "");

171 initialValues.put(PHONE_NUMBER, "");

172 initialValues.put(IP, 0);

173

174 return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0;

175

176 // return db.delete(DATABASE_TABLE, POSITION + "=" + position, null) > 0;

177 }

178

179 /**

180 * 更改数据

181 */

182 public boolean update(int position, String name, String phone_number, int ip) {

183

184 ContentValues initialValues = new ContentValues();

185 //initialValues.put(POSITION, position);

186 initialValues.put(NAME, name);

187 initialValues.put(PHONE_NUMBER, phone_number);

188 initialValues.put(IP, ip);

189

190 return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0;

191 }

192

193 public Cursor getAll() {

194

195 Cursor cur = db.query(DATABASE_TABLE,

196 null, null, null, null, null, null);

197 return cur;

198

199 }

200

201 public Cursor get(long rowId) throws SQLException {

202 Cursor cur = db.query(true, DATABASE_TABLE, new String[] {POSITION,

203 NAME,

204 PHONE_NUMBER,

205 IP},

206

207 POSITION + "=" + rowId, null, null, null, null, null);

208

209 if(cur != null) {

210 cur.moveToFirst();

211 }

212

213 return cur;

214 }

215

216 }

?

2Activity中调用:

?

?

1 public DBAdapter m_DBAdapter;

2

3 m_DBAdapter = new DBAdapter(this);

4 m_DBAdapter.open();

Android之数据库