一、数据库软件的使用
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(数据库版本有更新的话会调用该数据库)方法
@Override
public void onCreate(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类型的。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = " DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
该回调方法主要是用于数据库版本升级的,数据库版本升级时,回先将就得数据库表删除(如果存在的话),然后再调用onCreate方法,创建新的数据库表。
然后就是对数据库一系列的增删改查了:
插入数据:
/** * 插入数据 * @param noticeTitle * @param noticeMsg * @param noticeTime * @return */ public long insert(String noticeTitle,String noticeMsg,String noticeTime){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(NOTICE_TITLE,noticeTitle); cv.put(NOTICE_MSG,noticeMsg); cv.put(NOTICE_TIME,noticeTime); long row = db.insert(TABLE_NAME,null,cv); return row; }
查询数据:
查询所有的
/** * 查询操作 * @return */ public Cursor select(){ SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null); return cursor; }
条件查询(查询NOTICEID大于startNum小于endNum的所有数据)
/** * 条件查询 * @param startNum * @param endNum * @return */ public Cursor select(String startNum,String endNum){ SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(TABLE_NAME,new String[]{NOTICE_TITLE,NOTICE_MSG,NOTICE_TIME},"noticeId >= ? and noticeId < ?", new String[]{startNum,endNum},null,null,NOTICE_ID + " DESC"); return cursor; }
在条件查询中,我们可以进去方法里面看query所要传的参数
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { return query(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,所以我们就不必多此一举了。