Android中的数据库——SQLite
16lz
2021-01-24
SQLite是遵守ACID的关系型数据库管理系统。
废话不多说,直接上代码。
<span style="white-space:pre"></span>@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//打开或创建test.db数据库SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);db.execSQL("DROP TABLE IF EXISTS person");//创建person表db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");Person person = new Person();person.name = "Daniel";person.age = 1;person.name = "Spark";person.age = 33;//ContentValues以键值对的形式存放数据ContentValues cv = new ContentValues();cv.put("name", person.name);cv.put("age", person.age);//插入ContentValues中的数据db.insert("person", null, cv);cv = new ContentValues();cv.put("age", 2);//更新数据db.update("person", cv, "name = ?", new String[]{"john"});Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"3"});while (c.moveToNext()) {int _id = c.getInt(c.getColumnIndex("_id"));String name = c.getString(c.getColumnIndex("name"));int age = c.getInt(c.getColumnIndex("age"));Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);}c.close();//删除数据db.delete("person", "age < ?", new String[]{"5"});//关闭数据库db.close();//删除数据库//deleteDatabase("test.db");}
几个函数的说明:
public voidexecSQL(Stringsql)
Added in API level 1Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.
It has no means to return any data (such as the number of affected rows). Instead, you're encouraged to useinsert(String, String, ContentValues)
,update(String, ContentValues, String, String[])
, et al, when possible.
public longinsert(Stringtable,StringnullColumnHack,ContentValuesvalues)
Added in API level 1Convenience method for inserting a row into the database.
Parameters
table | the table to insert the row into |
---|---|
nullColumnHack | optional; may benull . SQL doesn't allow inserting a completely empty row without naming at least one column name. If your providedvalues is empty, no column names are known and an empty row can't be inserted. If not set to null, thenullColumnHack parameter provides the name of nullable column name to explicitly insert a NULL into in the case where yourvalues is empty. |
values | this map contains the initial column values for the row. The keys should be the column names and the values the column values |
Returns
- the row ID of the newly inserted row, or -1 if an error occurred
public intupdate(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)
Added in API level 1Convenience method for updating rows in the database.
Parameters
table | the table to update in |
---|---|
values | a map from column names to new column values. null is a valid value that will be translated to NULL. |
whereClause | the optional WHERE clause to apply when updating. Passing null will update all rows. |
whereArgs | You may include ?s in the where clause, which will be replaced by the values from whereArgs. The values will be bound as Strings. |
Returns
- the number of rows affected
publicCursorquery(boolean distinct,Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit)
Added in API level 1Query the given URL, returning aCursor
over the result set.
Parameters
distinct | true if you want each row to be unique, false otherwise. |
---|---|
table | The table name to compile the query against. |
columns | A list of which columns to return. Passing null will return all columns, which is discouraged to prevent reading data from storage that isn't going to be used. |
selection | A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table. |
selectionArgs | You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings. |
groupBy | A filter declaring how to group rows, formatted as an SQL GROUP BY clause (excluding the GROUP BY itself). Passing null will cause the rows to not be grouped. |
having | A filter declare which row groups to include in the cursor, if row grouping is being used, formatted as an SQL HAVING clause (excluding the HAVING itself). Passing null will cause all row groups to be included, and is required when row grouping is not being used. |
orderBy | How to order the rows, formatted as an SQL ORDER BY clause (excluding the ORDER BY itself). Passing null will use the default sort order, which may be unordered. |
limit | Limits the number of rows returned by the query, formatted as LIMIT clause. Passing null denotes no LIMIT clause. |
Returns
- A
Cursor
object, which is positioned before the first entry. Note thatCursor
s are not synchronized, see the documentation for more details.
See Also
Cursor
注意:
执行完操作后,一定不要忘记cursor.close()和database.close()。一定不要忘记cursor.close()和database.close()。一定不要忘记cursor.close()和database.close()。
重要的事说三遍!
更多相关文章
- C语言函数的递归(上)
- Sqlite3 增删改查操作实例
- Android(安卓)ListView实现通讯录的例子
- Android(安卓)bluetooth介绍(三): 蓝牙扫描(scan)设备分析
- Android(安卓)MediaPlayer播放prepareAsync called in state 8解
- Android数据储存之SharedPreferences
- PackageManagerService简介
- Activity之SharedPreferences探究
- android 控件放大缩小效果实现