您的位置:首页技术文章
文章详情页

Android中能不能判断一个数据库是create来的,还是open来的?

【字号: 日期:2024-09-08 16:40:40浏览:22作者:猪猪

问题描述

先简单说一下我想实现的功能,就是创建数据库的时候,同时也会创建一个表,然后就往表里插入数据;之后,就是打开数据库,然后对表的数据进行更新。所以我想知道这个数据库是创建来的,还是打开来的,好让我执行不同的操作。而我创建数据库的方法是继承SQLiteOpenHelper类和实现getWritableDatabase方法。具体如下图:Android中能不能判断一个数据库是create来的,还是open来的?Android中能不能判断一个数据库是create来的,还是open来的?

这样的话,我就打算判断这个mSqLiteDatabase(这是SQLiteDatabase的一个实例对象,截图没放出来)是创建来的,还是打开来的。因为我看文档里说,上图的方法是:存在该数据库就打开,不存在就创建。而getWritableDatabase方法是返回一个数据库的对象。所以我就这样瞎想,不知道可不可以判断。如果不行的话,有没有其它可替代的方法。

问题解答

回答1:

按你的需求来说,其实不用管它是新建的还是打开的吧,打开后查询下有没数据,有就更新,没有就新建。

回答2:

只要在DatabaseHelper的onCreate(SQLiteDatabase)方法里创建表就好了呀。数据库在第一次创建的时候就会调用这个方法的。之后你就只要插入数据就行了

回答3:

我一直用xutils操作数据库,这个对数据库封装的很好,也很简单。里面有个db.openorupdate方法,会自动对比数据,确定打开或更新。

如果用android原生的方法,也没必要判断,你只需要确认是否有新数据,有的话就插入就好了

回答4:

只有在第一次打开数据库的时候才会调用onCreate,这时候你创建表就行了,下一次打开的话不会再调用onCreate了。

回答5:

首先非常感谢各位的解答,根据xiluoduyu的回答,的确能够实现我想要的功能,换一下思路想,的确可以。但我在提这个问题的过程中发现,标题中所描述的问题其实也是我想知道,想弄明白的。可能这个问题比较奇葩,甚至是没有答案的,所以先作个记录,以后再回来瞧瞧。感谢各位!