Kotlin+sql打造存储系统

嗯,这回就用kotlin实现sql的简单操作。

首先创建一个database类,用来实现增删查改,然后实现一个dbhelper类,用来构建sql字符串。

Dbhelper是继承sqlliteopenhelper类,所以要重载几个函数,两个就行,一个是oncreat,一个是onupgrade

override fun onCreate(db: SQLiteDatabase){    db.execSQL("create table main (_id integer primary key autoincrement," +            "name text," +            "count text," +            "time text," +            ")");

override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {    db.execSQL("alter table main add account varchar(20)")}

首先在插入数据的时候要判断数据库存不存在,不能没有表就硬插对不对?会崩溃的,插入数据就是实例化一个contentValues,然后往里面put数据,最后让database去insert即可,最后不要忘记关闭database

在插入的时候进行判重复,如何判断重复?一种是查询主表中有没有重复,而是查询有没有这个名字的副表,这次就查询主表中有没有,我们可以自己构造sql语句执行,不过这样比较麻烦,但是kotlin已经有一个sqldatabase类了,鉴于本身也用不着多么复杂的系统,于是就用这个类好了

删除的时候用删除的sql语句,注意的是删除时需要名字的字符串数组,而不是一个字符串,需要转换,转换也很简单,用arrayof(String)即可

我打算首先创建一个总表,放着计划名字,然后再创建一个表,表的名字就是计划名字,里面放的是目标

那么,填入一个计划,就创建一个表,删除一个计划,就删除一张表,我计划让dbhelper完成所有的sql语句构建操作,而database类则进行容错判断处理,那么到底是用Android类,还是简单的只是用sql语句呢?这个就要根据实际效果来看,实际上,这两者并没有什么不同,甚至,如果用sqldatabase,则省去了自己编写数据库操作类的步骤,实际上的确如此,既然能省掉,那我再用那个类去构建一个新类,岂不多此一举?或者说,我构建sql新类,本身就是多此一举?说实话,的确是这样,为了完整性,我还是用sql语句单独实现一个sql操作类,自己去实现一些,函数更简便,那么就再也不能用sqldatabase类了。

同时也不能这么说,sqldatabase的cursor是真的好用,或者说,把sqldatabase封装,而舍弃dbhelper才是王道。。。

下期再更。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容