天天看點

Android:資料庫增删改查、SQLite、ORM、Cursor

1.繼承類SQLiteOpenHelper:

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

<code>public</code> <code>class</code> <code>MySQLiteHelper </code><code>extends</code> <code>SQLiteOpenHelper</code>

<code>{</code>

<code>    </code><code>//重寫構造方法</code>

<code>    </code><code>public</code> <code>MySQLiteHelper(Context context, String name, CursorFactory factory,</code>

<code>            </code><code>int</code> <code>version)</code>

<code>    </code><code>{</code>

<code>        </code><code>super</code><code>(context, name, factory, version);</code>

<code>    </code><code>}</code>

<code>    </code><code>//建立表</code>

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>void</code> <code>onCreate(SQLiteDatabase db)</code>

<code>        </code><code>db.execSQL(</code><code>"CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"</code> <code>);</code>

<code>        </code><code>db.execSQL(</code><code>"CREATE TABLE student(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"</code> <code>);</code>

<code>    </code><code>//更新表(當Database的Version低于目前new裡的Version,直接執行下面方法)</code>

<code>    </code><code>public</code> <code>void</code> <code>onUpgrade(SQLiteDatabase db, </code><code>int</code> <code>oldVersion, </code><code>int</code> <code>newVersion)</code>

<code>                                   </code> 

<code>        </code><code>int</code> <code>v = newVersion - oldVersion;</code>

<code>        </code><code>switch</code> <code>(v)</code>

<code>        </code><code>{</code>

<code>        </code><code>case</code> <code>3</code><code>:</code>

<code>            </code><code>db.execSQL(</code><code>"ALTER TABLE person ADD salary3 VARCHAR(20)"</code><code>);</code>

<code>        </code><code>case</code> <code>2</code><code>:</code>

<code>            </code><code>db.execSQL(</code><code>"ALTER TABLE person ADD salary2 VARCHAR(20)"</code><code>);</code>

<code>        </code><code>case</code> <code>1</code><code>:</code>

<code>            </code><code>db.execSQL(</code><code>"ALTER TABLE person ADD salary1 VARCHAR(20)"</code><code>);</code>

<code>        </code><code>default</code><code>:</code>

<code>            </code><code>break</code><code>;</code>

<code>        </code><code>}</code>

<code>}</code>

2.實作增删改查:

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

<code>/**</code>

<code> </code><code>*</code>

<code>CREATE TABLE person</code>

<code>(</code>

<code>       </code><code>personid INTEGER PRIMARY KEY AUTOINCREMENT,</code>

<code>       </code><code>name VARCHAR(20),</code>

<code>       </code><code>phone VARCHAR(20)</code>

<code>)</code>

<code>DROP TABLE person  //删除表</code>

<code>INSERT INTO person(name,phone) VALUES ("rongqin","1598088588")  //插入</code>

<code>UPDATE person SET name="Andfeel" WHERE personid=2   //改</code>

<code>ALTER TABLE person ADD salary      //增加列</code>

<code>DELETE FROM person WHERE name="Andfeel"    //删除</code>

<code>                    </code> 

<code>SELECT * FROM person WHERE name="Andfeel"</code>

<code>SELECT phone,name FROM person</code>

<code>SELECT name,phone FROM person ORDER BY name ASC"//ASC升序     DESC降序</code>

<code> </code><code>*/</code>

<code>public</code> <code>class</code> <code>MainActivity </code><code>extends</code> <code>Activity </code><code>implements</code> <code>OnClickListener</code>

<code>                      </code> 

<code>    </code><code>private</code> <code>TextView textView;</code>

<code>    </code><code>private</code> <code>MySQLiteHelper mDBHelper;</code>

<code>    </code><code>private</code> <code>MySQLiteHelper bHelper;</code>

<code>    </code><code>protected</code> <code>void</code> <code>onCreate(Bundle savedInstanceState)</code>

<code>        </code><code>super</code><code>.onCreate(savedInstanceState);</code>

<code>        </code><code>setContentView(R.layout.activity_main);</code>

<code>                          </code> 

<code>        </code><code>findViewById(R.id.btn__create_table).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_delete_table).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_alter_table).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_insert).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_delete).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_update).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>findViewById(R.id.btn_select).setOnClickListener(</code><code>this</code><code>);</code>

<code>        </code><code>textView = (TextView) findViewById(R.id.textView1);</code>

<code>        </code><code>//建立資料庫</code>

<code>        </code><code>mDBHelper = </code><code>new</code> <code>MySQLiteHelper(</code><code>this</code><code>, </code><code>"one.db"</code><code>, </code><code>null</code><code>, </code><code>3</code><code>);</code>

<code>    </code><code>public</code> <code>boolean</code> <code>onCreateOptionsMenu(Menu menu)</code>

<code>        </code><code>getMenuInflater().inflate(R.menu.activity_main, menu);</code>

<code>        </code><code>return</code> <code>true</code><code>;</code>

<code>    </code><code>public</code> <code>void</code> <code>onClick(View v)</code>

<code>        </code><code>switch</code> <code>(v.getId())</code>

<code>        </code><code>case</code> <code>R.id.btn__create_table:</code>

<code>            </code><code>btnCreateTable();</code>

<code>        </code><code>case</code> <code>R.id.btn_delete_table:</code>

<code>            </code><code>btnDeleteTable();</code>

<code>        </code><code>case</code> <code>R.id.btn_alter_table:</code>

<code>            </code><code>btnAlterTable();</code>

<code>        </code><code>case</code> <code>R.id.btn_insert:</code>

<code>            </code><code>btnInsert();</code>

<code>        </code><code>case</code> <code>R.id.btn_delete:</code>

<code>            </code><code>btnDelete();</code>

<code>        </code><code>case</code> <code>R.id.btn_update:</code>

<code>            </code><code>btnUpdate();</code>

<code>        </code><code>case</code> <code>R.id.btn_select:</code>

<code>            </code><code>btnSelect();</code>

<code>    </code><code>private</code> <code>void</code> <code>btnSelect()</code><code>//查</code>

<code>        </code><code>SQLiteDatabase db = mDBHelper.getWritableDatabase();</code>

<code>//        Cursor cursor = db.rawQuery("SELECT * FROM person WHERE name = ?", new String[]{"rongqin"});</code>

<code>//        cursor.moveToFirst();</code>

<code>        </code><code>Cursor cursor = db.query(</code>

<code>                </code><code>"person"</code><code>,                       </code><code>//表名</code>

<code>                </code><code>new</code> <code>String[]{</code><code>"phone"</code><code>,</code><code>"name"</code><code>},   </code><code>//查詢的列名</code>

<code>                </code><code>"name=?"</code><code>,                     </code><code>//查詢條件</code>

<code>                </code><code>new</code> <code>String[]{</code><code>"huangxx"</code><code>},        </code><code>//查詢參數</code>

<code>                </code><code>null</code><code>, </code><code>null</code><code>,</code>

<code>                </code><code>"phone DESC"</code><code>);                  </code><code>//排序,升序為ASC,降序為DESC</code>

<code>        </code><code>boolean</code> <code>hasdata = cursor.moveToFirst();</code><code>//遊标移到第一行</code>

<code>        </code><code>StringBuilder sb = </code><code>new</code> <code>StringBuilder();</code>

<code>        </code><code>while</code><code>(hasdata)</code><code>//是否有資料</code>

<code>            </code><code>int</code> <code>columnIndex = cursor.getColumnIndex(</code><code>"name"</code><code>);</code><code>//得到name的列數</code>

<code>            </code><code>String name = cursor.getString(columnIndex);</code><code>//得到name這一列的值</code>

<code>                              </code> 

<code>            </code><code>int</code> <code>columnIndex2 = cursor.getColumnIndex(</code><code>"phone"</code><code>);</code>

<code>            </code><code>String phone = cursor.getString(columnIndex2);</code>

<code>            </code><code>sb.append(</code><code>"name:"</code><code>).append(name).append(</code><code>" phone:"</code><code>).append(phone).append(</code><code>"--"</code><code>);</code>

<code>            </code><code>hasdata = cursor.moveToNext();</code><code>//遊标移動到下一行,判斷是否有值</code>

<code>        </code><code>textView.setText(sb.toString());</code>

<code>    </code><code>private</code> <code>void</code> <code>btnUpdate()</code><code>//改</code>

<code>//        db.execSQL("UPDATE person SET phone='0592xxxxxx' WHERE personid=5");</code>

<code>        </code><code>ContentValues values = </code><code>new</code> <code>ContentValues();</code>

<code>        </code><code>values.put(</code><code>"name"</code><code>, </code><code>"haoyouduo"</code><code>);</code>

<code>        </code><code>values.put(</code><code>"phone"</code><code>, </code><code>"666666"</code><code>);</code>

<code>        </code><code>db.update(</code><code>"person"</code><code>, values , </code><code>"personid=?"</code> <code>, </code><code>new</code> <code>String[]{</code><code>"8"</code><code>});</code>

<code>    </code><code>private</code> <code>void</code> <code>btnDelete()</code><code>//删</code>

<code>//        db.execSQL("DELETE FROM person WHERE name='Andfeel'");</code>

<code>        </code><code>db.delete(</code><code>"person"</code><code>,</code><code>"name = ? and personid = ?"</code><code>, </code><code>new</code> <code>String[]{</code><code>"haoyouduo"</code> <code>, </code><code>"5"</code><code>});</code>

<code>    </code><code>private</code> <code>void</code> <code>btnInsert()</code><code>//增</code>

<code>//        db.execSQL("INSERT INTO person(name,phone) VALUES ('rongqin',1598088588)");</code>

<code>        </code><code>values.put(</code><code>"name"</code><code>, </code><code>"huangxx"</code><code>);</code>

<code>        </code><code>values.put(</code><code>"phone"</code><code>, </code><code>"158888"</code><code>);</code>

<code>        </code><code>db.insert(</code><code>"person"</code><code>, </code><code>null</code> <code>, values );</code>

<code>    </code><code>private</code> <code>void</code> <code>btnAlterTable()</code><code>//擴充表</code>

<code>    </code><code>private</code> <code>void</code> <code>btnDeleteTable()</code><code>//删除表</code>

<code>    </code><code>private</code> <code>void</code> <code>btnCreateTable()</code><code>//建立表</code>

其他總結:

1.關閉資料源

<code> </code><code>* 關閉資料源</code>

<code>public</code> <code>void</code> <code>closeConnection()</code>

<code>    </code><code>if</code> <code>(mDb != </code><code>null</code> <code>&amp;&amp; mDb.isOpen())</code>

<code>        </code><code>mDb.close();</code>

<code>    </code><code>if</code> <code>(mDbHelper != </code><code>null</code><code>)</code>

<code>        </code><code>mDbHelper.close();</code>

<code></code>

本文轉自 glblong 51CTO部落格,原文連結:http://blog.51cto.com/glblong/1216877,如需轉載請自行聯系原作者