代码建库,在代码中动态建立数据库是比较常用的方法。列如在程序运行的过程中,当需要进行数据库操作的时候,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序会自动建立数据库,然后再打开数据库。
在编写的时候,一般将所有对数据库的操作封装到一个类中,因此只要调用这个类,就可以完成对数据库的添加、更改、删除和查询等操作。
public class MysqLiteHelper extends sqliteOpenHelper { /** * version 1 * factory 数据查找的游标 默认null>>> cursor * name 数据库名 * @param context */ public MysqLiteHelper(Context context) { super(context,"my.db",null,1); // Todo Auto-generated constructor stub } @Override public void onCreate(sqliteDatabase db) { db.execsql("create table person (_id integer primary key autoincrement,name varchar(32),age integer)"); } Dao层 public class PersonService { private MysqLiteHelper helper; public PersonService(Context context) { helper = new MysqLiteHelper(context); } /** * 插入数据 * @param p */ public void insert (Person p){ sqliteDatabase db = helper.getWritableDatabase(); //db.execsql("insert into person values("+p.getName()+","+p.getAge()+")"); if(db.isopen()){ db.execsql("insert into person(name,age)values (?,?)",new Object[]{p.getName(),p.getAge()}); } db.close(); } /** * 删除数据 * @param name */ public void del (String name){ sqliteDatabase db = helper.getWritableDatabase(); if(db.isopen()){ db.execsql("delete from person where name=?",new String[]{name}); } db.close(); } /** * 修改数据 * @param oldName * @param newName */ public void update (String oldName,String newName){ sqliteDatabase db = helper.getWritableDatabase(); if(db.isopen()){ db.execsql("update person set name=? where name=?",new String[]{newName,oldName}); } db.close(); } /** * 查询所有数据 * @return */ public List<Person> getAll(){ List<Person> lists=new ArrayList<Person>(); sqliteDatabase db = helper.getReadableDatabase(); if(db.isopen()){ Cursor cursor = db.rawQuery("select name,age from person",null); if(cursor!=null&&cursor.getCount()>0){ while(cursor.movetoNext()){ String name = cursor.getString(0); int age = cursor.getInt(1); Person person=new Person(name,age); lists.add(person); } } cursor.close(); return lists; } db.close(); return null; } /** * 查询对应的数据 * @param id * @return */ public Person getPersonById(int id){ sqliteDatabase db = helper.getReadableDatabase(); Person person=new Person(); if(db.isopen()){ Cursor cursor = db.rawQuery("select name,age from person where _id=? ",new String[]{String.valueOf(id)}); if(cursor!=null&&cursor.getCount()>0){ if(cursor.movetoLast()){ String name = cursor.getString(0); person.setName(name); int age = cursor.getInt(1); person.setAge(age); } } cursor.close(); return person; } db.close(); return null; }
一些简单sql操作语句:
//创建表
createtableperson(_idintegerprimarykeyautoincrement,namevarchar(32),ageinteger)
//插入数据
insertintopersonvalues(1,"bojie",18)
insertintopersonvalues(2,"pange",18)
//删除数据
deletefrompersonwherename="pange"
//查询数据
selectnamefrompersonwhere_id=2
//修改数据
updatepersonsetname="pange+tanji"wherename="pange"
其实这些操作都是基于一个继承了sqliteOpenHelper的子类
public class MysqLiteHelper extends sqliteOpenHelper { /** * version 1 * factory 数据查找的游标 默认null>>> cursor * name 数据库名 * @param context */ public MysqLiteHelper(Context context) { super(context,age integer)"); }
原文地址:https://www.jb51.cc/sqlite/199875.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。