SQLite存在用户的手机上
SQlite存储时不区分类型
位置:data/data/包名/databases目录下
工程中:
db包中创建helper类 //写一个类继承SQLiteOpenHelper,重写构造函数(4个参数)与oncreate和onupgrade方法,构造函数创建数据库,oncreate创建数据库中的表,onupgrade修改表
domian包中创建userbean类 //无参和有参的构造函数,set,get方法,toString方法
dao包中创建dao类 //Dao里面是增删改查的方法,通过获取数据库对象,执行sql语句
test测试类或者activity中执行操作 //创建测试类继承AndroidTestCase,清单文件中配置test节点,方法名以test开头; 先通过helper对象获取数据库,再通过dao对象,执行操作
创建数据库:
public MyHelper(Context context) { /** * Context context:环境 * String name:数据库名字 * Cursorfactory factory:游标工厂,null为默认的 * version:数据库版本从1开始 */ super(context, "users.db", null, 1); } public void onCreate(SQLiteDatabase db) { //可以执行创建表的操作 db.execSQL("CREATE TABLE USER(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))"); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //修改表,下面的是添加一列,在testCreateDB方法中要执行到就要改变数据库版本 db.execSQL("ALTER TABLE user ADD balance INTEGER" ); }在domain中创建Userbean
在dao中UserDao里面是增删改查的方法
private MyHelper myhelper; //构造函数 public UserDao(Context context) { myhelper = new MyHelper(context); // 创建helper类对象 }
public void insert(User user) { //增 MyHelper myhelper = new MyHelper(context); // 创建helper类对象 SQLiteDatabase db = myhelper.getWritableDatabase(); // 获取可写的数据库 db.execSQL("INSERT INTO user(name, password) VALUES (?,?)", new Object[]{user.getName(), user.getPassword()} ); //执行sql语句 /*第二种插入操作 ContentValues values = new ContentValues(); //ContentValues类似于Map,用来装载数据的集合 values.put("name", user.getName()); //向集合中装入数据,键是列名,值是要插入的值 values.put("password", user.getPassword()); /** * 第二个参数可以是null,也可以是随便的一个列名(用来插入null记录) * 返回一个long,-1为插入出错 */ long i = db.insert("user", "id", values); //执行插入操作,指定表明,指定数据 */ db.close(); //关闭数据库释放资源 }