使用SQLiteDatabase操作SQLite 数据库.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用?SQLiteDatabase?操作?SQLite?数据库[java]?/hosterZhu/article/details/6133927view plain/hosterZhu/article/details/6133927copy/*?Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。?execSQL()方法可以执行insert、delete、update和CREATE?TABLE之类有更改行为的SQL语句;?rawQuery()方法用于执行select语句。?execSQL()方法的使用例子:?SQLiteDatabase?db?=?....;?db.execSQL("insert?into?person(name,?age)?values('测试数据',?4)");?db.close();?执行上面SQL语句会往person表中添加进一条记录,在实际应用中,?语句中的“测试数据”这些参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句,?当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“?&?”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。?SQLiteDatabase类提供了一个重载后的execSQL(String?sql,?Object[]?bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。使用例子如下:?SQLiteDatabase?db?=?....;?db.execSQL("insert?into?person(name,?age)?values(?,?)",?new?Object[]{"测试数据",?4});??db.close();?execSQL(String?sql,?Object[]?bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。?*/??[java]?/hosterZhu/article/details/6133927view plain/hosterZhu/article/details/6133927copypublic?class?DatabaseHelper?extends?SQLiteOpenHelper?{???//类没有实例化,是不能用作父类构造器的参数,必须声明为静态??private?static?final?String?name?=?"itcast";?//数据库名称??private?static?final?int?version?=?1;?//数据库版本??public?DatabaseHelper(Context?context)?{??//第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类??super(context,?name,?null,?version);???}???@Override?public?void?onCreate(SQLiteDatabase?db)?{???db.execSQL("CREATE?TABLE?IF?NOT?EXISTS?person?(personid?integer?primary?key?autoincrement,?name?varchar(20),?age?INTEGER)");?}???@Override?public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{???db.execSQL("?ALTER?TABLE?person?ADD?phone?VARCHAR(12)?NULL?");?//往表中增加一列??//?DROP?TABLE?IF?EXISTS?person?删除表??}??}??//在实际项目开发中,当数据库表结构发生更新时,应该避免用户存放于数//据库中的数据丢失。?[java]?/hosterZhu/article/details/6133927view plain/

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档