安卓学习笔记之SQLite数据库
来源:互联网 发布:js string.format函数 编辑:程序博客网 时间:2024/04/20 11:32
下午看了这个,有点意思..
1.sqlite介绍
2.sqliteopenhelper使用方法
3.使用adb访问sqlite
SQLiteOpenHelper使用方法
getReadableDatabase()
getWritableDatabase()
//下面三个是回调函数
onCreate(SQLiteDatabase db)
onOpen(SQLiteDatabase db)
on upgrade
先得到一个sqliteopenhelper对象,//这个是抽象类
通过它的getreadableDatabase()或者
getWriteableDatabase得到一个
sqlitedatabase对象
sqlite的命令是以 .开头的.
简要学习笔记如上.
下面的写一些心得.
得到一个sqliteDatabase的步骤如下.
1.继承抽象类sqliteopenhelper
2.在另外的类中生成一个sqliteopenhelper
3.
如果只读,则
DatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2); SQLiteDatabase db = dh.getReadableDatabase();如果要写入,则
DatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2);SQLiteDatabase db = dh.getWritableDatabase();
/** * 在sqlhelper的子类中必须有这个构造函数 * @param context activity对象 * @param name 表名 * @param factory 传空值 * @param version 当前数据库的版本, 一定是正数 并且递增 */public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);//// TODO Auto-generated constructor stub}//注意一下,version版本号一定要>=当前版本号.不然会出错.
下面写adb的简单的使用方法.
首先
adb shell //进入shell
cd data
cd data
//到达此目录后
ls -l //找到需要进入的文件
cd xxx.xx.xxxx //data下面文件的存放都是包名
cd databases //进入这个下面.
使用 sqlite3 test_ck_db 就能进入数据库啦..
sqlite3数据库 所有的语句后面都要有个;号.这点需要注意..
然后,说说sqlite数据库用java实现简单创更增删改查
创建
class CreateDatabaseListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2); //类,数据库名字,版本号.3个组件分别对应SQLiteDatabase db = dh.getReadableDatabase();//获得一个可读的数据库} }执行这段代码后,会调用回调函数.. 也就是继承了sqliteopenhelper类的函数的抽象方法.
public void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL("create table user(id int, name varchar(20))");}简单的创建了一张表
更新
class updateDatabaseListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 3); //只要当前版本号,大于以前的版本号了就会更新.SQLiteDatabase db = dh.getReadableDatabase();} }
执行这段代码后也,会调用回调函数.
//回调函数@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub//升级数据库时调动.System.out.println("呵呵");}
增
class insertListener implements OnClickListener {@Overridepublic void onClick(View v) {//生成contentvalues'对象ContentValues values = new ContentValues();//向该对象中插入键值对, 其中键是列名,值是希望插入到这一列的值,values.put("id",1);values.put("name", "chenkai");DatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2); //获得一个可写的数据库的连接.SQLiteDatabase db = dh.getWritableDatabase();db.insert("user", null, values); //生成contentvalues对象的原因是用于 insert的第三个参数需要它,并且该对象是个键值对.//sql语句 insert into user values(???) id = ?, name = ?}
class deleteListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2);SQLiteDatabase db = dh.getWritableDatabase();db.delete("user", "id=?", new String[] {"1"});//sql语句之删除语句delete user where id=?
} }
改
class updatebaseListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2);SQLiteDatabase db = dh.getWritableDatabase();//得到一个可写的连接ContentValues values = new ContentValues();values.put("name", "ck_wizard");//第一个参数是表名,第二个参数db.update("user", values, "id=?", new String[]{"1"});//table 要更新的表名//values 是一个要更新的对象//whereclause 是where子句//whereArgs 前面有几个占位符,后面就有几个string值.//sql语句之更新 update user set name = ? where id = ?} }
查
class queryListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dh = new DatabaseHelper(MainActivity.this, "test_ck_db", 2);SQLiteDatabase db = dh.getReadableDatabase();Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);while( cursor.moveToNext() ) {String name = cursor.getString(cursor.getColumnIndex("name"));//游标中的值必须是编号.System.out.println("query---->"+name);}//sqlite中的查询需要使用到游标, 而且getString函数的实参要为表的编号.//sql语句之查询 select * from user where id = ? having orderby groupby} }
大概这就是我下午学习的东西...
0 0
- 安卓学习笔记之SQLite数据库
- 【Android】安卓学习笔记之操作SQLite数据库基础
- 安卓SQLite数据库笔记
- 安卓开发之SQLite数据库用法
- 安卓数据库编程之Sqlite
- 安卓学习笔记——SQLite
- xamarin学习笔记A10(安卓SQLite)
- 安卓学习:(6)安卓操作sqlite数据库
- 安卓SQLite数据库
- 安卓 SQLite数据库
- 安卓学习之SQLite相关学习指南
- android学习笔记之SQLite数据库存储
- 学习笔记 android数据库之 Sqlite
- android学习笔记之SQLite数据库
- 安卓学习之路之SQlite数据库的增删改查
- 2015.5.13安卓学习笔记之sqllite数据库
- 学习SQLite数据库 笔记
- SQLite数据库学习笔记
- Readprocessmemory用法
- 优化 AIX 7 内存性能: 监视内存的使用情况(ps、sar、svmon 和 vmstat)并分析其结果
- Convert Sorted List to Binary Search Tree
- A. Watermelon
- 电脑运行速度慢的解决办法及分析
- 安卓学习笔记之SQLite数据库
- Tomcat 8(四)server.xml的Cluster标签详解
- JS正则表达式大全
- 数值计算方法程序库
- 创建主窗口
- MCU锁相环简述(一)
- oracle数据库中的锁
- 读《创造高收益的阿米巴模式》理解阿米巴的核心
- 判断单链表是否存在环,判断两个链表是否相交问题详解