SQLite基础学习
来源:互联网 发布:淘宝开店考试答案2016 编辑:程序博客网 时间:2024/06/07 21:51
SQLite是一款轻量级数据库,集成于android中,下面从分享一下自己学习的。
在查阅资料时有一些好的说明就直接用了:
基本的curd语句
下面SQL语句获取5条记录,跳过前面3条记录select * from Account limit 5 offset 3 或者 select * from Account limit 3,5插入语句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(‘atm’,3)更新语句:update 表名 set 字段名=值 where 条件子句。如:update person set name=‘atm‘ where id=1删除语句:delete from 表名 where 条件子句。如:delete from person where id=1
getWritableDatabase()和getReadableDatabase()的区别
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。注意:getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会,所以如果不是更新数据库的话,最好调用后者来获得数据库连接。
Cursor的简单说明
不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQLite 数据库游标,使用游标,你可以:通过使用 getCount() 方法得到结果集中有多少记录;通过 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍历所有记录;通过 getColumnNames() 得到字段名;通过 getColumnIndex() 转换成字段号;通过 getString(),getInt() 等方法得到给定字段当前记录的值;通过 requery() 方法重新执行查询得到游标;通过 close() 方法释放游标资源;
提示:数据库中读取到的数据在cursor中,在写入到对象中时,要先判断cursor中是否有数据,否则当查询结果为空集时会报错!判断cursor为空时,不可以用cursor==null,及时cursor中没有数据,cursor也不为空。需要用cursor.getCount()函数来判断是否为空,结果为0时为空。
具体的代码:
首先:如何创建数据库
创建数据库和表。
数据库的默认保存路径为:“data/data/com.example.SqliteTest/databases/”
com.example.SqliteTest就是自己的工程
public class DBOpenHelp extends SQLiteOpenHelper { public DBOpenHelp(Context context) { super(context, "User_atm.db", null, 1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stubStringBuilder strSql = new StringBuilder();strSql.append("CREATE TABLE IF NOT EXISTS user_info (");strSql.append("user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,");strSql.append("user_age INT NOT NULL,");strSql.append("user_name VARCHAR(50) NOT NULL)"); db.execSQL(strSql.toString()); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //数据库修改是在这里操作,比如增加表字段 }
下面是增删改查以及事务的代码:
public class ServiceTest { //增删改查 //得到数据库 DBOpenHelp dbOpenHelp; public ServiceTest(Context context) { super(); this.dbOpenHelp = new DBOpenHelp(context); } //启动事务 public void TransactionTest(){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.beginTransaction(); try{ db.execSQL("update User_info set user_age=user_age+1 where user_id=10"); db.execSQL("update User_info set user_age=user_age-1 where user_id=11"); db.setTransactionSuccessful(); }finally{ db.endTransaction();} } //增 public void save(UserInfo userinfo){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("insert into user_info(user_id, user_age, user_name) values(?,?,?)", new Object[]{userinfo.getUser_id(),userinfo.getUser_age(), userinfo.getUser_name()}); } //删 public void delete(Integer user_id){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("delete from user_info where user_id=?", new Object[]{user_id}); } //修改 public void update(UserInfo userinfo){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("update user_info set user_age=?,user_name=? where user_id=?", new Object[]{userinfo.getUser_age(), userinfo.getUser_name(),userinfo.getUser_id()}); } //查询 public UserInfo find(Integer id){ SQLiteDatabase db = dbOpenHelp.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from user_info where user_id=?", new String[]{id.toString()}); if(cursor.moveToFirst()){ int user_id = cursor.getInt(cursor.getColumnIndex("user_id")); int user_age = cursor.getInt(cursor.getColumnIndex("user_age")); String user_name = cursor.getString(cursor.getColumnIndex("user_name")); return new UserInfo(user_id, user_name, user_age); } cursor.close(); return null; }}
可视化的数据库管理工具–SQLite Expert Professional
自己可以在网上下载。
下载后打开软件,进入主界面:
上图中红色框部分为导入和删除数据库。
上图中为新建表。
还有很多功能,可以在修改完后,从新导入到设备中(最开始到处的路径)。
通过cmd查看数据库
打开制定路径下的数据库
简单的数据库操作,查询一张表。
SQLite触发器:android:SQLite–触发器详解
0 0
- SQLite基础学习
- 学习SQLite基础笔记
- sqlite基础学习
- android基础学习之sqlite
- Android学习之sqlite基础
- Android基础学习之SQLite数据库
- python基础学习-python操作sqlite数据库
- Python基础学习-标签与sqlite
- SQLite基础
- Sqlite 基础
- SQlite基础
- sqlite 基础
- Sqlite基础
- SQLite 基础
- SQLite基础
- Android平台学习基础(2)-SQLite基本操作
- [学习筆记] linux sqlite編程基础
- android的基础学习:SQLite存储方式以及数据库操作
- easy_install安装,更新模块 python
- HttpClientGet与HttpClientPost
- iPhone 6 / 6 Plus 设计·适配方案
- Cacti的安装与插件开发(一)
- swift - The Composite Pattern
- SQLite基础学习
- 转载:Ant学习笔记——自己构建Ant编译环境
- 思维导图-理清发展思路
- DCIM 用 UIScrollView 和UIPageControl
- Tire学习总结
- scala2.10.x case classes cannot have more than 22 parameters
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- 面试题:阿里 改造站点
- 2015-08-12