gpt4 book ai didi

c# - SQLite 从数据表中插入

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:12 24 4
gpt4 key购买 nike

使用下面的代码,我得到了查询的@table 部分的异常。可以用数据表这样插入到SQLite中吗?

 DataTable table = new DataTable();
table.Columns.Add("Path", typeof(string));
table.Columns.Add("StopName", typeof(string));
table.Columns.Add("Latitude", typeof(string));
table.Columns.Add("Longitude", typeof(string));

foreach (Result result in tempResults)
{
table.Rows.Add(result.Path, result.StopName, result.Latitude, result.Longitude);
}

SQLiteCommand command = new SQLiteCommand("INSERT OR REPLACE INTO ZZ_DBA_Stop (Path, StopName, Latitude, Longitude) SELECT Path, StopName, Latitude, Longitude FROM @table", connection) { CommandTimeout = 3600, CommandType = CommandType.Text };
command.Parameters.AddWithValue("@table", table);
await command.ExecuteNonQueryAsync();

最佳答案

您不能将 DataTable 作为参数传递。我认为你想使用 DataTable 作为参数的主要原因是你想在 sqlite 中批量插入。这是一个例子

using (var transaction = connection.BeginTransaction())
using (var command = connection.CreateCommand())
{
command.CommandText =
"INSERT INTO contact(name, email) " +
"VALUES($name, $email);";

var nameParameter = command.CreateParameter();
nameParameter.ParameterName = "$name";
command.Parameters.Add(nameParameter);

var emailParameter = command.CreateParameter();
emailParameter.ParameterName = "$email";
command.Parameters.Add(emailParameter);

foreach (var contact in contacts)
{
nameParameter.Value = contact.Name ?? DBNull.Value;
emailParameter.Value = contact.Email ?? DBNull.Value;
command.ExecuteNonQuery();
}

transaction.Commit();
}

Reference: Bulk Insert in Microsoft.Data.Sqlite

关于c# - SQLite 从数据表中插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com