android数据存储之SQLite的使用技巧
程序员文章站
2022-07-03 20:28:14
android数据存储之SQLite的使用
1 创建SQLiteOpenHelper的子类去创建数据库
public class DataBaseHelper exte...
android数据存储之SQLite的使用
1 创建SQLiteOpenHelper的子类去创建数据库
public class DataBaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "mydata.db"; //数据库名称 private static final int version = 1; //数据库版本 public DataBaseHelper(Context context) { // SQLiteOpenHelper 的 参数 第一个为Context 其次是数据库名 然后是一个可选的游标工厂(通常是 Null)数据库版本 super(context, DB_NAME, null, version); } // 创建数据库时被调用,通常在该方法中创建数据库表以及添加应用使用到的初始数据 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //创建一个数据库表 sqLiteDatabase.execSQL("CREATE TABLE Student(id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name VARCHAR(10)," + "stuNum VARCHAR(20)," + "sex CHAR);"); //也可以写成: /*String sql = "CREATE TABLE Student(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(10),stuNum VARCHAR(20)," + "sex CHAR);"; sqLiteDatabase.execSQL(sql);*/ } // // 当数据库的版本号增加时调用 @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } //每次成功打开数据库后首先被执行 public void onOpen(SQLiteDatabase db) { super.onOpen(db); } }
2 使用数据库
2.1在onCreate中
//调用自定义的数据库帮助类 DataBaseHelper database = new DataBaseHelper(this); //创建或打开一个读写数据库 db = database.getReadableDatabase();
2.2 声明
//声明 //SQLiteDatabase类提供使用数据库的方法 创建他的对象去操作数据库 private SQLiteDatabase db = null;
2.3插入数据
private void insert(String name,String stu_num,String sex){ //实例化一个ContentValues用来装载待插入的数据 ContentValues values = new ContentValues(); values.put(str1,name); values.put(str2,stu_num); values.put(str3,sex); // 第一个参数为要插入的表名, // 第二个为当values参数为空或者里面没有内容的时候,insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入 // 第三个为插入的值 long id=db.insert("Student",null,values); //一定记得关闭数据库 避免泄露内存 db.close(); }
也可以使用sql语句执行:
// String sql = "insert into Student(name,stu_num,sex) values ('XX','XX','XX')";//直接填值的 // String sql = "insert into Student(name,stu_num,sex) values (?,?,?),new Object[] {str1,str2,str3}";//填变量 // db.execSQL(sql);//执行SQL语句
2.4 修改数据
public int update(String name,String stu_num,String sex){ //实例化一个ContentValues用来装载待修改的数据 ContentValues values = new ContentValues(); //这里不能改名字 //values.put(str1,name); values.put(str2,stu_num); values.put(str3,sex); //第一个为表名,第二个为修改的值,第三个为where 即修改的位置在哪 第四个为第三个中?的参数 即传入name的值给name这个列 //这里的参数也说明了,不能修改名字 因为传进来的name是存在数据库中的name 否则下面的这个代码就在数据库中找不要插入的位置 //要改名字得另起一个函数去根据别的参数去改 int number= db.update("Student",values,"name=?",new String[]{name}); //一定记得关闭数据库 避免泄露内存 db.close(); return number; }
也可以用Sql语句执行。
上一篇: 你得像教育我似的教育她了