sqlite支持的批量插入方式
时间: 2023-08-05 13:21:02 浏览: 99
sqlite循环批量插入数据采用批处理文件实现
SQLite支持两种方式的批量插入:
1. 使用事务(Transaction):在一个事务中,执行多个Insert语句,然后一次性提交事务。这种方式可以提高插入性能,因为它减少了I/O操作,但是需要确保在事务中的所有操作都成功,否则会导致数据不一致。
2. 使用Insert语句的多个Value子句:将多个Value子句连接起来,形成一个大的Insert语句。这种方式比使用事务的方式更简单,但是需要注意的是,一次Insert语句中的Value子句不能太多,否则会导致SQL语句过长,影响性能。
示例:
1. 使用事务的方式:
```
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
try
{
var command = new SQLiteCommand(connection);
for (int i = 0; i < data.Count; i++)
{
command.CommandText = "INSERT INTO TableName (Column1, Column2) VALUES (@Column1, @Column2)";
command.Parameters.AddWithValue("@Column1", data[i].Column1);
command.Parameters.AddWithValue("@Column2", data[i].Column2);
command.ExecuteNonQuery();
}
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
}
}
```
2. 使用Insert语句的多个Value子句的方式:
```
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
var command = new SQLiteCommand(connection);
command.CommandText = "INSERT INTO TableName (Column1, Column2) VALUES ";
for (int i = 0; i < data.Count; i++)
{
command.CommandText += $"(@Column1_{i}, @Column2_{i}),";
command.Parameters.AddWithValue($"@Column1_{i}", data[i].Column1);
command.Parameters.AddWithValue($"@Column2_{i}", data[i].Column2);
}
// 去掉最后一个逗号
command.CommandText = command.CommandText.TrimEnd(',');
command.ExecuteNonQuery();
}
```
阅读全文