java - 如何使用 Java 拆分 sql 查询

标签 java sql sqlite split

我播下了这些查询:查询位于同一行。

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/

相关文章:

java - 如果 JIT 正在执行字节码转换为机器指令,那么 JVM 有什么用

java - 将 JMX 的 XML Spring 配置转换为 Java 配置

sql - 使用 JOIN 时如何在 MS Access 中删除?

MYSQL:连续日期的表更新

sqlite - Flutter Sqflite 多表模型

java - 在 keyup 事件上跳过 Primefaces 输入文本的验证,但在提交时验证

java Paint 组件在 PaintComponent 之外声明形状和大小

sql - 将日期与字符串组合

ios - 实体的核心数据可选属性如何工作?

java - 将 Android 应用程序连接到基于 PC 的数据库