分享

Android sqllite小篇

 Sunny_Gql 2011-07-26
package com.ros;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqlOpenHelp extends SQLiteOpenHelper {
    private static int version = 1;

    // 构造函数
    public MySqlOpenHelp(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
    }

    public MySqlOpenHelp(Context context, String name, int version) {
        super(context, name, null, version);
    }

    public MySqlOpenHelp(Context context, String name) {
        this(context, name, version);
    }

    // 当该类被创建时,自动调用OnCreate方法创建表
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table users(id int ,name varchar(20))");
    }

    // 当该类被创建时,自动调用onUpgrade方法升级数据库版本
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//        System.out.println(" update database !");
    }

}


//对上面类的利用

// 创建数据库
        MySqlOpenHelp DBhelp = new MySqlOpenHelp(main.this, "MySchool");// "MySchool"为数据
        // 得到一个数据库
        //getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。
        //但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,
        //倘若使用的是getWritableDatabase() 方法就会出错。
        //getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,
        //当打开失败后会继续尝试以只读方式打开数据库。所以最好用getReadableDatabase()得到实例
        SQLiteDatabase myschool = DBhelp.getReadableDatabase();
        // 存取数据的数组,以键值对存在
        ContentValues values = new ContentValues();
        values.put("id", 2);
        values.put("name", "gql");
        myschool.insert("users", null, values);
    //进行查询数据,关于查询有两个重要方法
        //query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)方法各参数的含义:
        //table:表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。
        //columns:要查询出来的列名。相当于select语句select关键字后面的部分。
        //selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
        //selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。
        //groupBy:相当于select语句group by关键字后面的部分
        //having:相当于select语句having关键字后面的部分
        //orderBy:相当于select语句order by关键字后面的部分,如:personid desc, age asc;
        //limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。
        Cursor curos=myschool.query("users",new String[]{"id","name"}, "id=?", new String[]{"1"},null,null,null);
        while (curos.moveToNext()) {
            String name = curos.getString(curos.getColumnIndex("name"));
            System.out.println(name + "---find");
        }
        //修改数据
         ContentValues  updateValues=new ContentValues ();
         updateValues.put("name", "zhangzhijie");
         myschool.update("users", updateValues, "id=?",new String[]{"2"});
        //进行查询二……
        //值在数组中的顺序要和占位符的位置对应。
        //SQLiteDatabase的rawQuery() 用于执行select语句,使用例子如下: SQLiteDatabase db = ....;
        Cursor cursor = myschool.rawQuery("select * from users", null);
        int id = 0;;
        String name = "";
        while (cursor.moveToNext()) {
            id = cursor.getInt(0); // 获取第一列的值,第一列的索引从0开始
            name = cursor.getString(1);// 获取第二列的值
        }
        System.out.println("id===" + id + "   name=======" + name);
        //删除
           myschool.delete("users", "id=?", new String[]{"1"});
        //关闭数据库
           myschool.close();


这是我工作中遇到要用的自己写的,其他的不足之处可以参考http://hi.baidu.com/zzliru/blog/item/79a00831024c6a94a8018e74.html很不错的东东!













    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多