安卓学习笔记之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
原创粉丝点击