SQLite数据库的建表以及存储
代码建库,在代码中动态建立数据库是比较常用的方法。列如在程序运行的过程中,当需要进行数据库操作的时候,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序会自动建立数据库,然后再打开数据库。 在编写的时候,一般将所有对数据库的操作封装到一个类中,因此只要调用这个类,就可以完成对数据库的添加、更改、删除和查询等操作。 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)"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |