一、数据库软件的使用
1、创建数据库【直接点击添加数据库就可以创建】
在Database File中填写你要创建的数据库名字,如果你不指定路径的话,他会默认在C:\Users\Administrator\Documents\目录下创建数据库文件,当然建议你自定义一个路径,这样方便自己管理。
2、创建表
create table Notice(noticeId integer primary key autoincrement,noticeTitle varchar(50))
这里我们创建了一个Notice的数据库,其中有两个字段,一个是 noticeId,他是自增长的主键,另一个字段是noticeTitle,创建完之后就可以看到已经有一个表了:
3、插入数据
insert into Notice(noticeTitle) values("通知")
插入的时候,制定了向哪个表的哪个字段中插入什么数据,这里表示向Notice表的noticeTitle字段中插入了"通知"这个值
4、查询
select * from Notice where noticeId>=2 and noticeId<5
这里我们将Notice表中所有的字段都查出来了,但是加了一个限制,我们查的是noticeId大于等于2并且小于5的数据。
5、删除表
很简单的一句话就可以了,drop table Notice
这里只是很简单的介绍了一下如果使用Sqlite可视化编辑器,以后有机会还会详细介绍数据库方面的知识。二、在Android中使用数据库
一般我们在Android代码中使用数据库时,我们一般会创建一个工具类,这个工具类继承自SQLiteOpenHelper,继承这个类必须要实现两个方法,一个是onCreate(创建数据库的时候会调用该方法)方法,一个是onUpgrade(数据库版本有更新的话会调用该数据库)方法
@Overridepublic voidonCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE "+ TABLE_NAME+ " ("+ NOTICE_ID+ " INTEGER primary key autoincrement, "+ NOTICE_TITLE+ " text, "+ NOTICE_MSG+" text, "+ NOTICE_TIME+ " text);";
db.execSQL(sql);
}
在该回调方法中我们创建了一个表格 名字叫做 TABLE_NAME,其中包含三个字段,其中NOTICE_ID是一个主键,他是整形类型,并且是自增长的;另外三个是 NOTICE_TITLE,NOTICE_MSG和NOTICE_TIME,他们是text类型的。
@Overridepublic voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) {
String sql = " DROP TABLE IF EXISTS "+ TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
该回调方法主要是用于数据库版本升级的,数据库版本升级时,回先将就得数据库表删除(如果存在的话),然后再调用onCreate方法,创建新的数据库表。
然后就是对数据库一系列的增删改查了:
插入数据:
/*** 插入数据*@paramnoticeTitle*@paramnoticeMsg*@paramnoticeTime*@return*/public longinsert(String noticeTitle,String noticeMsg,String noticeTime){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = newContentValues();
cv.put(NOTICE_TITLE,noticeTitle);
cv.put(NOTICE_MSG,noticeMsg);
cv.put(NOTICE_TIME,noticeTime);
longrow = db.insert(TABLE_NAME,null,cv);
returnrow;
}
查询数据:
查询所有的
/*** 查询操作*@return*/publicCursor select(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null);
returncursor;
}
条件查询(查询NOTICEID大于startNum小于endNum的所有数据)
/*** 条件查询*@paramstartNum*@paramendNum*@return*/publicCursor select(String startNum,String endNum){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(TABLE_NAME,newString[]{NOTICE_TITLE,NOTICE_MSG,NOTICE_TIME},"noticeId >= ? and noticeId < ?",
newString[]{startNum,endNum},null,null,NOTICE_ID+ " DESC");
returncursor;
}
在条件查询中,我们可以进去方法里面看query所要传的参数
publicCursor query(String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having,
String orderBy) {
returnquery(false, table, columns, selection, selectionArgs, groupBy,
having, orderBy, null/* limit */);
}
第一个table:表名
第二个columns:所要查询的列名,如果为null,则表示查询所有的字段
第三个selection:要查询的条件,这里要注意以下语法,比如我们经常的条件查询要用where,但是在这里你用where他就会报错了,相关的语法你可以去百度找一下,提供一个地址:http://www.runoob.com/sqlite/sqlite-syntax.html。
第四个selectionArgs:条件参数
第五个groupBy:分组方式即根据什么方式来进行分组
第六个having:类似于where的作用,但是它只用于goup by(统计分组中)
第七个orderBy:排序方法
注意:在查询的时候,有很多人回踩一个坑。平常我们使用sql语句的时候,比如条件查询 我们一般在sql语句前面加一个"where",order by语句的时候,在查询语句前面加一个"order by",但是在Android中的query方法中就不必要加一些这个东西了,应为他已经规定了哪一个参数是where,哪一个参数是having,哪一个参数是orderby,所以我们就不必多此一举了。