Android学习笔记---Android利用Sqlite,并且用sql语言操作SQLite数据库
6.对数据库进行操作:一下是对数据库的操作代码,包括添加,删除,更新,查询,和分页,统计-------------------------------------------------------------------/DBSQLIte/src/com/credream/entity/Person.javapackage com.credream.entity;public class Person{private Integer id;private String name;private String phone;public Person(){}public Person(Integer id, String name, String phone){this.id = id;this.name = name;this.phone = phone;}public Person(String name, String phone){this.name = name;this.phone = phone;}public Integer getId(){return id;}public void setId(Integer id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public String getPhone(){return phone;}public void setPhone(String phone){this.phone = phone;}@Overridepublic String toString(){return "Person [id=" + id + ", name=" + name + ", phone=" + phone + "]";}}----------------------------------------------------------/DBSQLIte/src/com/credream/service/DBOpenHelter.javapackage com.credream.service;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;public class DBOpenHelter extends SQLiteOpenHelper{//父类没有默认构造器,需要显示调用public DBOpenHelter(Context context){super(context, "credream.db", null, 2);//数据库创建完成后,默认会保存在<包>/database/文件夹下//当修改版本号时候,会触发:onUpgrade方法//第二个:指定数据库名称,//第三个:游标工厂,用来迭代,查询后的结果集,null代表使用系统默认的游标工厂//版本号,大于0}/*** 这个方法是在数据库第一次被创建的时候调用的*/@Overridepublic void onCreate(SQLiteDatabase db){//SQLiteDatabase这个类,封装了增删改查操作,也叫做数据库操作实例db.execSQL("CREATE TABLE person (personid integer primary keyautoincrement, name varchar(20))");//这里也可以不写name的数据类型,因为sqlite是数据类型无关的,就是写了varchar(20),也可以写入超过20的内容}/*** 当数据库的版本号变更的时候被调用*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){db.execSQL("alter table person add phone varchar(12) null");}}---------------------------------------------/DBSQLIte/src/com/credream/service/PersonService.javapackage com.credream.service;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.credream.entity.Person;public class PersonService{private DBOpenHelter dbOpenHelter;public PersonService(Context context){this.dbOpenHelter=new DBOpenHelter(context);}/*** 添加记录* @param person*/public void save (Person person){SQLiteDatabase db=dbOpenHelter.getWritableDatabase();//SQLiteDatabase db2=dbOpenHelter.getWritableDatabase();//这里获得的数据库实例和db这个数据库实例是一样的,因为数据库有缓存功能//在源码里进行了判断,如果得到的数据库实例不为null,并且已经打开,并且是只读的,那么//就直接返回这个实例//dbOpenHelter.getWritableDatabase().execSQL(sql);这里和db.execSQL("作用是一样的//db.execSQL("insert into person (name,phone) values('"+person.getName()+"','"+person.getPhone()+"')");//上面这种写法是错误的,因为当用户输入cre'dream的时候那么sql语句就成了//insert into person (name,phone) values('cre'dream','15066659146')这样会出现sql语法错误//所以,应该用转义字符db.execSQL("insert into person (name,phone) values(?,?)",newObject[]{person.getName(),person.getPhone()});//db.close();//数据库也可以不关闭,因为这样的话可以提升性能,因为不用频繁的开关数据库}/*** 删除记录* @param person*/public void delete (Integer id){SQLiteDatabase db=dbOpenHelter.getWritableDatabase();db.execSQL("delete from person where personid=?",new Object[]{id});}/*** 更新记录* @param person*/public void update(Person person){SQLiteDatabase db=dbOpenHelter.getWritableDatabase();db.execSQL("update person set name=?,phone=? wherepersonid=?",new Object[]{person.getName(),person.getPhone(),person.getId()});}/*** 查找记录* @param id* @return*/public Person find (Integer id){SQLiteDatabase db=dbOpenHelter.getReadableDatabase();//getReadableDatabase();这个方法里面调用了getWritableDatabase();方法,来取得数据库操作实例,只有调用//失败的时候就会发现异常,当数据磁盘满了,会抛出异常,这时候会打开这个实例的数据库//然后开始读取,这样当磁盘满的时候,//当数据库磁盘空间没有满的时候,返回的数据库操作实例是一样的:可读可写,当数据库磁盘满了,返回的数据库//操作实例是只读的Cursor cursor=db.rawQuery("select * from person where personid=?",newString[]{id.toString()});//游标存放结果if(cursor.moveToFirst()){int补充:移动开发 , Android ,
上一个:Android学习笔记---android平台中利用,SAX解析xml
下一个:Android学习笔记----SQLiteDatabase 自带添加、删除、更新、查询的操作方法:实现添加,删除,更新,查询,和分页,统计
- 更多SQLite疑问解答:
- 数据库sqlite3 里:用函数sqlite3_get_table来获取数据是否 可以 排序么(order by cTime asc)
- 开始学sqlite,在下载了个sqlite3_exe,和一个sqlite admin数据库,我现在疑问的是,可以通过sqlite3.exe
- 关于Sqlite使用Group by以后的排序问题。
- sqlite做网络数据库怎么样
- sqlite支持动态sQL,能不能给个对表名进行拼接的,可以运行通的过的代码范例啊,大侠们
- 用SQLite expert创建的数据库,如何导入到android中
- sqlite3 开始建立数据库时,没有设定主键。怎么去修改
- Android中用SQLite数据库是出现的错误,帮忙解决一下:
- android 应用程序开发用到数据库 ,是否需要使用SQLite Manager
- sqlite查询条件参数为空怎么办
- Android sqlite通过字符串为条件执行删除某一记录的问题
- android 程序碰到问题,很简单的一个程序,从sqlite数据库里面查找数据,点击按钮后获得相应数据
- sqlite数据库中插入数据时出现database is locked!什么原因?我没有设置密码.
- ios移动开发、QT应用开发、ZigBee协议栈、SQlite数据库支持,这些都可以描述成我应用到的技术吗?
- sqlite和mysql有关系吗? 能代替mysql运行织梦程序吗?