现在的位置: 首页 > 综合 > 正文

Android SQLite简单使用

2013年08月11日 ⁄ 综合 ⁄ 共 3381字 ⁄ 字号 评论关闭

 增、删、改、建表、修改表结构:
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就是独孤九剑,剑招极少(总共就creatalterinsertupdatedeleteselect六个语句,比独孤九剑还少三招,而且其中变化繁杂的就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");

 

抱歉!评论已关闭.