天天看点

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,如需转载请自行联系原作者