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 1

Execute 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.

因为没有返回值,所以不要在insert,update的时候使用这个函数。

public longinsert(Stringtable,StringnullColumnHack,ContentValuesvalues)

Added in API level 1

Convenience 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 providedvaluesis empty, no column names are known and an empty row can't be inserted. If not set to null, thenullColumnHackparameter provides the name of nullable column name to explicitly insert a NULL into in the case where yourvaluesis 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 1

Convenience 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 1

Query the given URL, returning aCursorover 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
  • ACursorobject, which is positioned before the first entry. Note thatCursors are not synchronized, see the documentation for more details.
See Also
  • Cursor

注意:

执行完操作后,一定不要忘记cursor.close()和database.close()。一定不要忘记cursor.close()和database.close()。一定不要忘记cursor.close()和database.close()。

重要的事说三遍!

更多相关文章

  1. C语言函数的递归(上)
  2. Sqlite3 增删改查操作实例
  3. Android(安卓)ListView实现通讯录的例子
  4. Android(安卓)bluetooth介绍(三): 蓝牙扫描(scan)设备分析
  5. Android(安卓)MediaPlayer播放prepareAsync called in state 8解
  6. Android数据储存之SharedPreferences
  7. PackageManagerService简介
  8. Activity之SharedPreferences探究
  9. android 控件放大缩小效果实现

随机推荐

  1. Android系统集成第三方pre-build库和程序
  2. Android(安卓)动态加载APK--代码安装、获
  3. Android(安卓)Input Framework(二)---Eve
  4. android 内存优化以及性能优化相关问题
  5. Android如何解析Intent Filter
  6. android中shape,selector,layer-list的使用
  7. Android照相机竖屏研究引导
  8. Jquery 仿 android Toast效果
  9. Android音频系统之AudioPolicyService的
  10. Android上的bug定位(troubleshooting)