// 总结特定 // 1. openOrCreateDatabase()不需要调用 // 2. 封装了数据库的创建、升级的 // 3. 当需要获取SQLiteDatabase对象的时候 使用 // getReadableDatabase()、getWritableDatabase()即可 public class MyHelper extends SQLiteOpenHelper { private static String DB_NAME = "scholar.db"; private static int VERSION = 1; // SQLiteOpenHelper构造器的四个参数 // 参数1. 上下文 // 参数2. 数据库的名称("scholar.db") // 参数3. 数据库Cursor的工厂。一般设置为null // 参数4. 该数据库的版本号 public MyHelper(Context context) { super(context, DB_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 当调用该方法时 数据库已经存在了 // 也就是说openOrCreateDatabase()不需要调用了 // 这里只需要创建表就可以了 String sql = "CREATE TABLE IF NOT EXISTS [user] ([u_name] TEXT(10), [u_age] INTEGER, [u_height] INTEGER);"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
public DBUtils(Context context) { this.context = context; helper = new MyHelper(context); } // 往表中插入记录 // INSERT INTO user(字段1,字段2) VALUES(值1,值2); // 返回值表示插入了多少条记录(0表示插入失败) public long insert(ContentValues values) { db = helper.getWritableDatabase(); return db.insert("user", // 第一个参数:表名 null, // 第二个参数:当插入的记录全部为空时 找一个不为空的字段。大部分情况下直接写null values); // 要插入的实际值(ContentValues对象) } // 从表中删除记录 // DELETE FROM user WHERE 字段1=值1 AND 字段2=值2 // 返回值表示删除了多少条记录(0表示删除失败) public int delete(String whereClause, String[] whereArgs) { db = helper.getWritableDatabase(); return db.delete("user", // 第一个参数:表名 whereClause, // WHERE语句(具体的值可以使用?来代替) whereArgs); // whereClause中的?会被这里具体的值所取代 } // 更新表中的记录 // UPDATE user SET 字段1=值1,字段2=值2 WHERE 字段3=值3 AND 字段4=值4 // 返回值表示更新了多少条记录(0表示无更新) public int update(ContentValues values, String whereClause, String[] whereArgs) { db = helper.getWritableDatabase(); return db.update("user", // 第一个参数:表名 values, // 第二个参数:要更新的实际值(ContentValues对象) whereClause, // WHERE语句(具体的值可以使用?来代替) whereArgs); // whereClause中的?会被这里具体的值所取代 } // 查询所有记录 // SELECT * FROM user // 返回Cursor游标(描述数据库的数据) public Cursor queryAll() { db = helper.getReadableDatabase(); return db.query("user", null, null, null, null, null, null); } // 按条件查询 // SELECT * FROM user WHERE 字段1=值1 AND 字段2=值2 // 返回Cursor游标(描述数据库的数据) public Cursor queryWhere(String selection, String[] selectionArgs) { db = helper.getReadableDatabase(); return db.query("user", null, selection, selectionArgs, null, null, null); } // 按字段查询 // SELECT 字段1,字段2 FROM user public Cursor queryField(String[] columns) { db = helper.getReadableDatabase(); return db.query("user", columns, null, null, null, null, null); // columns表示要查询的字段 }
查询结果显示
Cursor cursor = dbutils.queryField(new String[]{"u_name", "u_age"}); // 遍历查询出来的每条记录 while(cursor.moveToNext()){ // 姓名 int columnIndex = cursor.getColumnIndex("u_name"); // 第几列 String name = cursor.getString(columnIndex); // 年龄 columnIndex = cursor.getColumnIndex("u_age"); int age = cursor.getInt(columnIndex); // 身高 //columnIndex = cursor.getColumnIndex("u_height"); //int height = cursor.getInt(columnIndex); Log.i("DBUtils", "name: " + name + ", age:" + age); }
Cursor cursor = dbutils.queryAll(); SimpleCursorAdapter adapter = new SimpleCursorAdapter(MainActivity.this, // 第一个参数:上下文 android.R.layout.simple_list_item_2, // 第二个参数:每行的布局 cursor, // 第三个参数:数据库数据(游标) new String[] { "p_name", "p_height" }, // 第四个参数: new int[] { android.R.id.text1, android.R.id.text2 }, // 第五个参数:布局中控件的id 0); listview.setAdapter(adapter);