2013-04-11 52 views
0

我有一种方法,运行从外部soruces而不是从android设备获得的INSERT SQL语句。传入的统计信息可能会导致重复的记录,并且我希望Android设备在引起重复时忽略sql语句。该方法是:Android SQLite捕获错误使用execSQL

ourDatabase.execSQL(sql) 

表其插入数据到具有下列柱防止重复

KEY_CONCATA + " TEXT PRIMARY KEY , " + 

如果这是唯一的,而不是主键?

系统此刻认识到它导致了重复并结束了程序,我希望它能够捕捉到错误,并且在它重复时停止插入到数据库中。

谢谢!

+0

你可以有一个'TEXT PRIMARY KEY'和主键默认是独一无二的......是什么错误? – Sam 2013-04-11 18:52:14

+0

列concata是不唯一的(代码19) – user1876202 2013-04-11 18:53:31

回答

1

声明KEY_CONCATA TEXT NOT NULL UNIQUE当插入使用insertWithOnConflictSQLiteDatabase.CONFLICT_IGNORE标志

+0

我不知道这是否会工作,因为传入是一个SQL语句,例如INSERT INTO database_table WHERE .....即时猜测这样的输入将无法使用insertWithOnConflict? – user1876202 2013-04-11 18:58:23

+0

尝试KEY_CONCATA TEXT NOT NULL唯一的冲突IGNORE – 2013-04-11 19:00:02

+1

或'KEY_CONCATA +“TEXT PRIMARY KEY ON CONFIGIC IGNORE,”+' – Sam 2013-04-11 19:02:01