我播下了这些查询:查询位于同一行。
INSERT INTO data_location ( `latitude`, `updated`, `id`, `longitude`, `created`)
VALUES( '213.2000000', '2014-08-25 11:07:42+00:00', '1', '321.0000000',
'2014-08-25 11:07:42+00:00');
INSERT INTO data_location ( `latitude`, `updated`, `id`, `longitude`, `created`)
VALUES( '42.7191000', '2014-09-17 12:53:49+00:00', '2', '23.0834000',
'2014-09-17 12:53:49+00:00');
INSERT INTO data_news (`id`, `title`, `date`, `short_content`, `content`,
`created`, `updated`)
VALUES(10, 'fdsafsda.', 'fdsafafa>', '2014-09-26 08:10:55', '2014-09-26 08:10:55');
INSERT INTO data_news (`id`, `title`, `date`, `short_content`, `content`,
`created`, `updated`)
VALUES(11, 'fdsafdsafd „THE THROWAWAYS”', '2014-09-26 11:22:00',
'fdsafdsafdsafda(dsa);', '2014-09-26 09:05:09', '2014-09-26 09:05:09');
我想把他们分开。在此阶段,使用以下方法来划分它们:
String[] parts = sql.split("(?<=\\);)");
db.beginTransaction();
for (String entry : parts) {
SQLiteStatement stmt = db.compileStatement(entry);
stmt.execute();
stmt.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
问题是在最后一个查询数据中有以下 ...safda(dsa);...
它被接受并成为无效查询。有没有一种方法可以智能拆分而不会出现此类问题?
最佳答案
如果所有查询看起来都像示例中的这些查询,那么您也可以将结尾与右括号匹配:');
因此分割变为:sql.split("(?<='\\);)");
关于java - 如何使用 Java 拆分 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119991/