初始化SQL脚本
安装软件时要初始化数据库,通常的需求是新建表、索引、视图、存储过程等对象,插入初始数据。Oracle没有drop table if exists或create table if not exists语法,所以需要自己处理。第一种情况:如果表存在,先删除再建立。begin for x in (select table_name from all_tables where owner=...sqlite create table if not exists例子 谷歌
4). "IF NOT EXISTS"从句:
如果当前创建的数据表名已经存在,即与已经存在的表名、视图名和索引名冲突,那么本次创建操作将失败并报错。然而如果在创建表时加上"IF NOT EXISTS"从句,那么本次创建操作将不会有任何影响,即不会有错误抛出,除非当前的表名和某一索引名冲突。
sqlite> CREATE TABLE testtable (first_col integer);
Error: table testtable already exists
sqlite> CREATE TABLE IF NOT EXISTS testtable (first_col integer);
http://www.cnblogs.com/stephen-liu74/archive/2012/02/13/2321668.html
Android 判断SQLite数据库中是否存在某一个表格
有两种方法,
第一种方法是:不需要知道表是否存在,在创建表的时候加上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的方法。
http://ningtukun.blog.163.com/blog/static/18654144520132238915882/