嗯,这回就用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才是王道。。。
下期再更。。。