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很不错的东东! |
|