增、删、改、建表、修改表结构:
void execSQL(String sql)
查:
Cursor rawQuery(String sql, String[] selectionArgs)
写个简单的例子:
package cn.aa;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
public
class simpleSQLiteTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 简单示意一下吧,界面神马的都不管了
try {
// 1.创建或打开数据库
// 最后一个参数根据实际情况可以选择
// SQLiteDatabase.CREATE_IF_NECESSARY、
// SQLiteDatabase.OPEN_READONLY、
// 或SQLiteDatabase.CREATE_IF_NECESSARY + SQLiteDatabase.OPEN_READONLY
// 或者,您也可以使用Mars老师教的那个方法创建
String dbName = "/data/data/cn.aa/userinfo_db";
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbName, null,SQLiteDatabase.CREATE_IF_NECESSARY);
// 2.创建表
// 我要执行的在已打开的数据库中创建表的SQL语句是:
// create table t_userinfo(userId int primary key,name varchar(100),height double)
// execSQL方法的参数可以写成确定的SQL语句字符串,也可以用字符串连接更灵活的拼出您想要的SQL语句
// 第二遍执行的时候记得把这句注释掉。不能重复建同名表
db.execSQL("create table t_userinfo(userId int primary key,name varchar(100),height double)");
// 3.添加记录
// 我要执行的向表t_userinfo添加记录的SQL语句是:
// insert into t_userinfo values(1,"张三",1.85)
// 注意下面这几句的SQL语句是我用字符串连接拼出来的
// 另外注意SQL语句中的双引号"需要写成转义字符\"
int userId = 1;
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"张三\",1.85)");
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"李四\",1.76)");
db.execSQL("insert into t_userinfo values(" + userId++ + ",\"王五\",1.82)");
// 4.修改记录
// 我要执行的在表t_userinfo中修改记录的SQL语句是:
// update t_userinfo set height = 1.65 where name = "张三"
String userName = "张三";
db.execSQL("update t_userinfo set height = 1.65 where name = \"" + userName + "\"");
// 5.删除记录
// 我要执行的在表t_userinfo中删除记录的SQL语句是:
// delete from t_userinfo where name = "李四"
// 这次把SQL语句写死吧,不拼了,累……
db.execSQL("delete from t_userinfo where name = \"李四\"");
// 6.查询
// 我要执行的在表t_userinfo中查询的SQL语句是:
// select * from t_userinfo
// 这个要使用rawQuery方法,它的返回值是一个Cursor
// 您可以选择自己拼接您的SQL语句,或者使用通配符?配合第二个参数selectionArgs来获得灵活性,效果一样
Cursor rows = db.rawQuery("select * from t_userinfo", null);
while (rows.moveToNext()) {
int id = rows.getInt(rows.getColumnIndex("userId"));
String name = rows.getString(rows.getColumnIndex("name"));
double height = rows.getDouble(rows.getColumnIndex("height"));
System.out.println(id + "\t" + name + "\t" + height);
}
//最后不要忘了关闭数据库
db.close();
} catch (SQLiteException e) {
e.printStackTrace();
}
}
}
呵呵,那得看您要不要掌握SQL了。
我评价SQL就是独孤九剑,剑招极少(总共就creat、alter、insert、update、delete、select六个语句,比独孤九剑还少三招,而且其中变化繁杂的就select一招),威力极大(能够应付数据库的所有操作),变化极繁(主要是select,那叫一个千变万化)
要是您以后都用不到SQL,那琢磨琢磨SQLiteDatabase类里面的函数,搞清楚各个参数的意义,用起来也一样的。
但是我想您既然用到sqlite了,以后保不齐会用别的数据库。那就还不如把SQL学好(现在数据库不支持SQL是不可想象的)。那样的话我这个方法的优势就很明显了。只要您能写出SQL语句,这两个函数就够了。
只需要知道3点:
1.SQL语句写成字符串形式作为函数的参数
2.可以拼接SQL语句获得灵活性
3.注意把SQL语句中的引号写成转义字符
****************************************************************************
1. //取得數據库及所在位置。注意,此处用的StringBuilder,是为了节约内存,减少String操作时产生内存消耗(String操作时,将发生内存的申请与释放,比较耗内存)。
2. StringBuilder ji连接文本_S = new StringBuilder(60);
3. ji连接文本_S.append(this.getClass().getPackage().getName());
4. ji连接文本_S.insert(0, "/data/data/");
5. ji连接文本_S.append("/database/userinfo_db");