黑马程序员_Android_SQLite基本概念与使用

来源:互联网 发布:极限挑战网络更新时间 编辑:程序博客网 时间:2024/06/05 20:15

---------------------- android培训、java培训、期待与您交流! ----------------------

今天学习了Android当中SQLite的概念与基本使用,因为刚刚学习完java基础,对数据库,没有什么基础,所以今天的学习课程尤为难以理解

所以今天的笔记,记得及其详细,详细的我都觉得三八,在这里写一篇博客,将今天关于SQLite的笔记加以记忆上的感觉整理一下,希望可以帮助到和我一样SQLite理解不是很好的朋友得到更好的理解:

1:SQLite介绍
Android开发平台内嵌的非常小的一个关系型数据库(基于文本的关系型数据库),虽然小,但是体现了非常完整的关系型数据库的特征


2:SQLiteOpenHelper的使用方法
Android提供的一个助手类,基于这个助手类我们能更方便的对SQLiteOpenHelper数据库中的数据进行操作
在Android中使用SQLiteOpenHelper访问数据库会更方便
SQLiteOpenHelper中的一些常用方法:
(1):getReadableDatabase()
得到一个可读的数据库
使用这个方法会返回一个SQLiteDatabase对象,我们可以基于这个对象对数据库进行查操作
(2):getWritableDatabase()
得到一个可写的数据库
使用这个方法会返回一个SQLiteDatabase对象,我们可以基于这个对象对数据库进行增删改操作
(3):onCreate(SQLiteDataBase db)
创建数据库中的一些表结构可以在这个方法中操作,这个回调函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候才会调用该方法
在这个方法里我们可以用SQLiteDatabase的execSQL方法创建表
例:db.execSQL("create table user(id int,name varchar(20))");
(4):onOpen(SQLiteDataBase db)
(5)):onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion)
当我们升级一个数据库时,就可以在这个方法中为数据库增加一些表结构,或修改一些表,但数据库升级时就会执行这个方法
(6):close()


这个类是一个抽象类,我们如果想使用这个类就需要继承这个类


当我们想要对一个SQLite进行操作时,就需要写一个类继承SQLiteOpenHelper,然后用SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()函数根据需求获得一个可读或可写的SQLiteDatabase对象,然后基于SQLiteDatabase对象对SQLite数据库进行操作


在SQLiteOpenHelper的子类当中必须有参数为(Context context,String s,CursorFactory factroy,int version)的构造函数,第一个参数是一个Activity对象,第二个参数是表的名字,第四个参数是单签数据库的版本,在这个构造函数中还要用super传入参数值,调用父类构造函数


3:adb
adb是Android所提供的一个调试工具,通过这个调试工具我们可以在命令行中直接访问数据库,对数据库进行一些查询操作


4:增 删 改 查


(1):创建数据库
在我们创建数据库时,我们在Activity中的对应监听器中需要创建
我们自己创建的SQLiteOpenHelper子类的对象,里面传入当前Activity对象和所创建数据库名称作为参数,并且一定要用getWritableDatabase()或getWritableDatabase()方法获取SQLiteDataBase对象才算创建成功
例:DatabaseHelper dbHelper = new DatabaseHelper (SQLiteActivity.this,"new_db")
SQLiteDataBase db = dbHelper .getWritableDatabase();
*SQLiteActivity.this   当前Activity对象  "new_db"  数据库名称   数据库版本号为默认


(2):更新数据库版本
在我们更新数据库版本时,我们在Activity中的对应监听器中需要创建
我们自己创建的SQLiteOpenHelper子类的对象,里面传入当前Activity对象和升级数据库名称还有升级后版本号作为参数,并且一定要用getWritableDatabase()或getWritableDatabase()方法获取SQLiteDataBase对象才算创建成功
DatabaseHelper dbHelper = new DatabaseHelper (SQLiteActivity.this,"new_db",2)
SQLiteDataBase db = dbHelper .getWritableDatabase();


(3):插入数据到数据库
当我们向数据库中插入数据的时候,我们需要在监听器中创建ContentValues对象(这个对象在数据库写入时会经常用到),我们可以向该对象当中插入键值对,键是插入的列数,值就是插入的值,所输入键值对必须和我们规定的类型相同,在Activity中的对应监听器中需要创建我们自己创建的SQLiteOpenHelper子类的对象,里面传入当前Activity对象和所创建数据库名称作为参数,还需要用或getWritableDatabase()方法获取一个可写的SQLiteDataBase对象,然后我们用SQLiteDataBase对象的insert方法就可以成功插入数据库了
insert方法中的第一个参数是表明,第二个参数是因为SQL中不允许用空列,所以值对应的列没有的话,系统默认为null,第三个参数是插入的值
例:ContentValues values = new ContentValues();
values.put("id" ,1);
values.put("name","zhagnsan");
DatabaseHelper dbHelper = new DatabaseHelper (SQLiteActivity.this,"new_db")
SQLiteDataBase db = dbHelper .getWritableDatabase();
sb.insert("user",null,values);


(4):更新数据库数据
在Activity中的对应监听器中需要创建我们自己创建的SQLiteOpenHelper子类的对象,里面传入当前Activity对象和所创建数据库名称作为参数,还需要用或getWritableDatabase()方法获取一个可写的SQLiteDataBase对象,在创建一个ContentValues对象,在ContentValues中加入键值对,键是更改的列,只是想更改成的值,然后用SQLiteDataBase对象的update更新
例:DatabaseHelper dbHelper = new DatabaseHelper (SQLiteActivity.this,"new_db")
SQLiteDataBase db = dbHelper .getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","zhagnsan1");
db.update("user",values,"id=?",new String[]("1"));
"user"   是要更改的表
values 是ContentValues对象
"id=?" 是where语句,?是占位符,占位符的作用是代替未知的值
new String[]("1") 是为占位符赋值,前面有几个占位符,数组中就应该有几个元素


(5):查询数据库数据
Activity中的对应监听器中需要创建我们自己创建的SQLiteOpenHelper子类的对象,里面传入当前Activity对象和所创建数据库名称作为参数,还需要用或getReadableDatabase()方法获取一个可读的SQLiteDataBase对象,然后用SQLiteDataBase对象的query方法,query方法返回的是一个Cursor对象
query方法中的参数:
1:查找的表的名字
2:是一个String数组,数组中的元素是查找哪些列的名字
3:where子句
4:占位符赋值数组
5:分组
6:分组限制
7:查询结果排序


Cursor对象是一个游标,他的moveToNext方法有两个功能,一是指向一行,二是判断有没有下一行,有返回true,这样我们就可以用这个方法循环判断来取出游标中的值
我们在循环中获取值时,需要用Cursor的getString方法获取,里面需要传入行号,这个行号用Cursor的getColumnIndex方法传入行名来获取 
例 : DatabaseHelper dbHelper = new DatabaseHelper (SQLiteActivity.this,"new_db")
SQLiteDataBase db = dbHelper .getReadableDatabase();
Cursor cursor = db.query("user",new String[]{"id","name"},"id=?",new String[]("1"),grouBy,having,orderBy);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
}


今天的课程就属这里最为重要,也最难为理解,想来 以后学习数据库知识之后们这里的难点会迎刃而解吧!

---------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

原创粉丝点击