2011-03-04 12:49 SQLite判断表是否存在 今天刚好用到sqlite来存放一些数据,但是需要检测表是否已经存在;
其实很简单,只要查看sqlite_master表中是否存在这条数据就可以知道了
SELECT count(*) FROM sqlite_master WHERE type='table' AND name='tableName'
android判断sqlite中数据库的某个表是否存在 final String CREATE_BASE_TABLE ="create table if not exists login (" + "id INTEGER PRIMARY KEY,"+ "email TEXT,"+ "password TEXT,"+ ");";
I have an android app that needs to check if there’s already a database available in the device, and if not, process some things and eventually create it.Then check if a particular table exists.
SQLiteDatabase db; db = openOrCreateDatabase("TestData.db", SQLiteDatabase.CREATE_IF_NECESSARY , null);
If database exists and table exists simply read the data from the database if the data does exist.
Tip: For checking if a table Exists:
However, It is easy to find if a table exists or NOT,
Create a SQLiteDatabase object and have a call to query(…), the sql query string has select command. If the returned cursor is null then the table doesn’t exist.
SQLiteDatabase tempDatabase; try {tempDatabase =SQLiteDatabase.openDatabase(DBPATH+DBNAME, null, SQLiteDatabase.OPEN_READONLY);try{Cursor cur; cur=tempDatabase.rawQuery("select * from table where id='"+idvar+";",null); if(cur==null){//our table doesn't exist, so we'll create one or take an action.} }catch (SQLiteException e) { //our table doesn't exist, so we'll create one or take an action.}} catch (SQLiteException e) { //our database doesn't exist, so we'll create one or take an action.}
翻译过来大致是这个意思:
有两种方法,
第一种方法是:不需要知道表是否存在,在创建表的时候加上if not exists 例:create table if not exists myTable(...) ,这样做的好处是,不需要知道表是否存在,只要每次都进行创建即可。因为里面有判断,如果表存在的时候,再执行这句不会发生重复创建表的情况。
第二种方法是:直接执行某个SQL语句,用try...catch来捕获数据库操作的异常。当异常表示数据库表不存在的时候,再进行处理。例:
try{
Cursor c = getWritableDatabase().query("select * from myTable",null );
catch(Exception e) // 或者是 SQLiteException .
{//添加处理代码,例如:创建表。
}
第二种的方法不如第一种好,原因是:第二种写起来比较麻烦,还有,如果有其它异常的时候,需要对异常来进行判别,并处理。
PS:
上面的E文中有一种方法是判断query的返回值 ,那个别想了,我在测试的时候,如果表被删除了,一到那里就崩溃,只能通过try...catch的方法。
分享到:
相关推荐
在Android开发中,SQLite数据库操作步骤包括: 1. 创建项目,并在项目中添加SQLite相关的包。 2. 实现SQLiteOpenHelper类,并在其中实现onCreate()和onUpgrade()方法来创建和更新数据库。 3. 实现Model类,用于封装...
2. SQLite数据库的创建、操作和管理,包括增删改查。 3. 用户界面(UI)设计,如何响应用户的摇一摇操作并给出反馈。 4. Android线程间通信,如Handler和Runnable的使用。 5. 性能优化,确保流畅的用户体验和电池...
在Android应用开发中,数据持久化是至关重要的一个环节,GreenDao是一个高效的对象关系映射(ORM)框架,专门用于Android平台,它使得在Android应用中操作SQLite数据库变得更加简单。本篇文章将深入探讨如何利用...
SQLite数据库可以用来持久化表情数据,而JSON文件则适用于小规模的静态数据。为了提高加载速度,可以预先加载常用表情到内存,其他表情按需加载。 6. 表情键盘切换: 需要实现系统键盘与自定义表情键盘之间的切换...
2. `nullColumnHack`:这个参数通常设置为`null`,表示如果某个列的值为null,系统不会尝试去判断该列是否存在。这主要是为了解决某些旧版本SQLite的兼容性问题。 3. `values`:一个`ContentValues`对象,包含了要...
7. **SQLite数据库**:对于更复杂的数据存储需求,例如保存用户同意的特定条款版本等,可以使用SQLite数据库。但通常,SharedPreferences对于简单的布尔值存储已经足够。 8. **代码逻辑**:确保在所有可能的入口点...
当玩家输入两个相似词时,游戏会通过SQL查询来检查这两个词是否存在于同一个成语中,或者是否存在某个相思字使得这两个词能组成成语。这样的查询可能类似于以下SQL语句: ```sql SELECT * FROM 成语 WHERE word1 = ...
在游戏逻辑方面,开发者可能使用了Android的SQLite数据库来存储和管理卡片信息,或者使用SharedPreferences来保存用户的进度和设置。源码中会有对这些存储机制的调用和操作。 事件处理是Android应用中的关键部分,...
在适配器的onBindViewHolder中,根据数据项的位置判断是否是固定的item,并相应地设置其不可拖拽的属性。对于非固定item,可以通过设置dragFlags使其可拖拽。 最后,测试应用,确保拖拽操作流畅,固定item不参与...
总结,开发“通信卫士”涉及到的主要技术点包括Android权限管理、广播接收器、电话状态监听、SQLite数据库操作、UI设计以及服务优化。开发者需要充分理解Android系统的工作原理,同时注重用户体验,打造一款高效、...
CursorAdapter可以从SQLite数据库查询结果(即Cursor对象)中获取数据,并将其转化为GridView的Item。在newView方法中,我们可以根据逻辑判断动态设置Item的布局,从而实现网格列表与详细信息列表的切换。例如,当...
数据源可以是SQLite数据库、JSON文件或者网络API。在加载数据时,我们根据城市名的首字母对它们进行排序。 接下来,我们要创建一个自定义的Adapter,它是连接ListView与数据源的关键。这个Adapter需要处理分组逻辑...
将SQLite数据库文件(如dictionary.db)打包到应用的assets目录下,然后在应用中使用AssetManager读取并加载数据库。 #### 36. 打开res/raw目录下的数据库文件 使用getResources().openRawResource()方法可以访问...
- 可能使用SQLite数据库保存用户的游戏记录或者当前棋局状态,方便用户继续未完成的游戏。 - 文件存储(如SharedPreferences)可能用于存储用户偏好设置,如音效开关、难度等级等。 7. **资源优化与性能调优** -...
在安卓开发中实现添加和删除好友功能是即时通讯应用中...实际开发中还可能涉及到更多的细节和高级话题,例如使用Retrofit或Volley等网络通信框架,使用Room或SQLite等本地数据库,以及更复杂的应用架构和设计模式等。
8. **数据持久化**: 如果数据量大且需要离线访问,可以考虑将数据存储在SQLite数据库中,使用CursorLoader获取数据并填充Adapter。 9. **适配不同版本**: 考虑到Android设备的碎片化,需要确保在4.2.2及更高版本上...
3. **数据库模块**:为了实现离线浏览和保存用户信息,应用可能使用SQLite数据库存储部分数据。这部分代码涉及SQLite的查询、插入、更新和删除操作。 4. **业务逻辑模块**:这是应用的核心,包括团购规则计算、订单...
SQLite是Android内置的轻量级数据库,适合小规模数据存储。或者可以利用SharedPreferences来保存简单的配置信息。 **权限管理**是Android开发中不可忽视的部分。由于涉及蓝牙功能,需要在AndroidManifest.xml中声明...
数据的存储是通过一个或多个SQLite数据库来实现的, Launcher中有专门的数据库辅助类来处理与数据库相关的操作。 通过上述内容,我们系统性地分析了Launcher应用的核心实现,从界面配置到启动流程,再到数据处理和...
在实际应用中,树状数据可能存储在SQLite数据库中。我们需要编写SQL语句来查询和操作这些数据,比如获取顶级节点、插入新节点、更新节点状态等。 5. **点击事件处理**:在自定义适配器的`getView()`方法中,我们...