Thứ Tư, 20 tháng 6, 2012

Làm việc với Database trên Android (P2)


Lần trước mình đã đề cập đến việc tạo một lớp quản lý chung với một số tác vụ:
- Tạo database
- Chạy câu SQL
- Tạo table
- ....
Lần này mình xin giới thiệu để tạo một thể hiện của một trường trong Database SQLite
Trong SQLite chỉ có 3 kiểu dữ liệu là: INT, TEXT, BOOL
Vì thế ta cần tạo một biến enum chứa một bộ các hằng số về kiểu dữ liệu này. Sau đó implement một số phương thức như trong VD sau

?
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
package com.tannm.doan.taskmanager.database;
import java.util.Calendar;
import android.content.*;
public class DataField {
 // types
 public static enum Type {
  INT, TEXT, BOOL
 };
 // fields
 private Calendar dateOut = Calendar.getInstance();
 // fields
 private DataRow dataRow = null;
 private ContentValues values = null;
 // fields
 private int index = 0;
 private String sName = "";
 private Type fieldType = Type.INT;
 private boolean bCanBeNull = true;
 private boolean bPrimaryKey = false;
 // methods
 public DataField(int index, String sName, Type fieldType,
   boolean bCanBeNull, boolean bPrimaryKey) {
  this.index = index;
  this.sName = sName;
  this.fieldType = fieldType;
  this.bCanBeNull = bCanBeNull;
  this.bPrimaryKey = bPrimaryKey;
 }
 public String getColumnDefinition() {
  String s = sName + " " + getSqlType(fieldType);
  if (bPrimaryKey)
   s += " PRIMARY KEY";
  if (!bCanBeNull)
   s += " NOT NULL";
  return s;
 }
 public Type getType() {
  return fieldType;
 }
 public int getIndex() {
  return index;
 }
 public String getSqlType(Type value) {
  switch (value) {
  case INT:
   return "INTEGER";
  case TEXT:
   return "TEXT";
  case BOOL:
   return "INTEGER";
  }
  return "TEXT";
 }
 public void setParentRow(DataRow dataRow) {
  this.dataRow = dataRow;
  this.values = this.dataRow.getContentValues();
 }
 public String getName() {
  return sName;
 }
 // getters
 public String asString() {
  return values.getAsString(sName);
 }
 public long asLong() {
  return values.getAsLong(sName);
 }
 public boolean asBoolean() {
  return (values.getAsLong(sName) == 1);
 }
 public boolean isNull() {
  return (values.get(sName) == null);
 }
 public Calendar asCalendar() {
  dateOut.setTimeInMillis(values.getAsLong(sName));
  return dateOut;
 }
 // setters
 public void set(String value) {
  values.put(sName, value);
 }
 public void set(long value) {
  values.put(sName, value);
 }
 public void set(boolean value) {
  int i = (value) ? 1 : 0;
  values.put(sName, i);
 }
 public void set(Calendar value) {
  values.put(sName, value.getTimeInMillis());
 }
 public void setNull() {
  values.put(sName, (String) null);
 }
}

Không có nhận xét nào: