Android官方Training学习——在SQL数据库中保存数据
来源:互联网 发布:手机天气预报软件排行 编辑:程序博客网 时间:2024/06/15 05:46
在官方文档的培训教程中看到了SQL一章,看了一下午没怎么懂,于是晚上找了一些前辈的实例来学习,大致明白了SQL在Android当中的使用。
1.建立契约类(Contract)
契约类的作用是为数据库定型,包含了数据库具体的操作语句和表的定义一些静态字段。
定义一个内部类,存储表名和表结构。
public class MySQLiteContract { private static final String TEXT_TYPE = " TEXT"; //保存一些类型的字符串 private static final String INTEGER_TYPE = " INTEGER"; private static final String COMMA_SEP = ","; public static final String SQL_CREATE_ENTRIES =//保存SQL的操作语句 "CREATE TABLE IF NOT EXISTS " + MyStudentEntry.TABLE_NAME + " (" + MyStudentEntry._ID + " INTEGER PRIMARY KEY," + MyStudentEntry.COLUMN_NAME + TEXT_TYPE + COMMA_SEP + MyStudentEntry.COLUMN_AGE + INTEGER_TYPE + " )"; public static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + MyStudentEntry.TABLE_NAME; public static final String SQL_QUERY_ENRIES = "SELECT * FROM " + MyStudentEntry.TABLE_NAME; public class MyStudentEntry implements BaseColumns {//内部类,存储表名和表结构 public static final String _ID = "_id"; public static final String TABLE_NAME = "student";//表的列名 必须小写 public static final String COLUMN_NAME = "name"; public static final String COLUMN_AGE = "age"; }}
2.定义一个Helper 继承 SQLiteOpenHelper
· 这个类有两个方法:
OnCreate(SQLitedatabase db): 生成数据库时自动调用,在内部做一些表的初始化操作。
OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion): 更新时操作,更改表结构(增删列)时调用,更改时需要更新版本号。
public class MySQLiteDBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "students.db";//数据库文件名 private static final int DATABASE_VERSION = 1;//数据库版本号 public MySQLiteDBHelper(Context context){ super(context,DATABASE_NAME,null,DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(MySQLiteContract.SQL_CREATE_ENTRIES); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(MySQLiteContract.SQL_DELETE_ENTRIES); onCreate(db); }}
3.定义类型
定义自己的类,以便数据库对象和实体对象互相转换。
public class Student { public int _id; public String name; public int age; public Student(){} public Student(String name, int age) { this.name = name; this.age = age; }}
4.定义数据库管理类
这个类实现了一些具体的操作方法,如在表中增删对象,查询表中的内容等等,也负责数据库对象到实体对象的转换。
public class MySQLiteManager { private MySQLiteDBHelper helper;//声明一个Helper类 private SQLiteDatabase db;//数据库类,由helper类得到 MySQLiteManager(Context context){ helper = new MySQLiteDBHelper(context); db = helper.getWritableDatabase();//得到数据库类 } public void add(List<Student> mStudents) {//增加数据 for(int i = 0; i < mStudents.size() ; i++){ ContentValues values = new ContentValues(); Student student = mStudents.get(i); values.put(MySQLiteContract.MyStudentEntry.COLUMN_NAME,student.name); values.put(MySQLiteContract.MyStudentEntry.COLUMN_AGE,student.age); db.insert(MySQLiteContract.MyStudentEntry.TABLE_NAME,null,values); } } public List<Student> query() {//查询数据库内容 ArrayList<Student> students = new ArrayList<>(); Cursor c = db.rawQuery(MySQLiteContract.SQL_QUERY_ENRIES,null); while(c.moveToNext()){ Student student = new Student(); student._id = c.getInt(c.getColumnIndex("_id")); student.name = c.getString(c.getColumnIndex("name")); student.age = c.getInt(c.getColumnIndex(MySQLiteContract.MyStudentEntry.COLUMN_AGE)); students.add(student); } c.close(); return students; } public void updateAge(Student student) {//更新年龄 ContentValues cv = new ContentValues(); cv.put(MySQLiteContract.MyStudentEntry.COLUMN_AGE , student.age); db.update(MySQLiteContract.MyStudentEntry.TABLE_NAME,cv,"name = ?",new String[]{student.name }); } public void deleteOldStudent(Student student1) {//删除数据 db.delete(MySQLiteContract.MyStudentEntry.TABLE_NAME,"age >= ?",new String[]{String.valueOf(student1.age)}); }}
5.与界面结合
剩余的就是在Activity或者Fragment中new一个上面定义的Manager类型,然后调用里边的方法来进行数据库的读写了。
学艺不精先记录一下,可能会有一些错误存在, 请多包涵,哪里不对欢迎大家指正,谢谢!
0 0
- Android官方Training学习——在SQL数据库中保存数据
- 在SQL数据库中保存数据Saving Data in SQL Databases——翻译自developer.android.com Training
- android学习(四) 在 SQL 数据库中保存数据
- Android 在 SQL 数据库中保存数据
- Android - 数据存储 -在SQL数据库中保存数据
- Android Developers:在SQL数据库中保存数据
- Training--保存数据(3)-- 在SQL数据库中保存数据
- 在 SQL 数据库中保存数据
- 在数据库中保存数据
- 官网翻译篇--在 SQL 数据库中保存数据
- 如何在Android应用程序中保存数据
- 在数据库中保存会话
- PHP中在数据库中保存Checkbox数据(1)
- 如何在SQLite数据库中保存image数据
- 在数据库中保存和读取图片
- 在数据库中保存会话session
- PHP:在数据库中保存会话
- 在数据库中保存FastReport .Net报表
- 取模mod
- P3388 【模板】割点
- 关于Eclipse中Project Facts 里面Dynamic Web Module的设置
- php面试宝典6
- 斩退路 赢出路
- Android官方Training学习——在SQL数据库中保存数据
- uva498 Simply Subsets
- 华为OJ-表示数字
- 转换IC GM7122:BT656转CVBS芯片 视频编码电路芯片
- 第二十三讲项目三 两段函数求值
- 关于RBM的一点笔记
- NOI2004郁闷的出纳员
- eclipse如何修改dynamic web module version
- MIT_线性代数笔记_02_矩阵消元