您的位置:首页 > 移动开发 > Android开发

Android中的数据库——SQLite

2015-10-12 14:11 405 查看
SQLite是遵守ACID的关系型数据库管理系统。

废话不多说,直接上代码。

<span style="white-space:pre"> </span>@Override
protected 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 void execSQL (String sql)

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 use 
insert(String,
String, ContentValues)
update(String,
ContentValues, String, String[])
, et al, when possible.

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


public long insert (String table, String nullColumnHack, ContentValues values)

Added in API level 1

Convenience method for inserting a row into the database.

Parameters
tablethe table to insert the row into
nullColumnHackoptional; may be 
null
. SQL doesn't allow inserting a completely empty row without naming at least one column name. If your provided 
values
 is empty, no column names are known and an empty row can't be inserted. If
not set to null, the 
nullColumnHack
 parameter provides the name of nullable column name to explicitly insert a NULL into in the case where your 
values
 is empty.
valuesthis 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 int update (String table, ContentValues values, String whereClause, String[] whereArgs)

Added in API level 1

Convenience method for updating rows in the database.

Parameters
tablethe table to update in
valuesa map from column names to new column values. null is a valid value that will be translated to NULL.
whereClausethe optional WHERE clause to apply when updating. Passing null will update all rows.
whereArgsYou 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


public Cursor query (boolean
distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

Added in API level 1

Query the given URL, returning a 
Cursor
 over
the result set.

Parameters
distincttrue if you want each row to be unique, false otherwise.
tableThe table name to compile the query against.
columnsA 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.
selectionA 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.
selectionArgsYou 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.
groupByA 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.
havingA 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.
orderByHow 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.
limitLimits the number of rows returned by the query, formatted as LIMIT clause. Passing null denotes no LIMIT clause.
Returns
Cursor
 object,
which is positioned before the first entry. Note that 
Cursor
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()。

重要的事说三遍!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息