【发布时间】:2021-12-22 07:48:34
【问题描述】:
我有一种情况,我想从设计时不知道架构的外部源导入数据,这作为 DataSet 进入了我的函数。
我想将数据集中的表导入 SQLite,理想情况下我想写这样的东西:
using (var connection = new SQLiteConnection("Data Source=temp.db")) {
var command = connection.CreateCommand();
command.CommandText = @"CREATE TABLE tempTable AS SELECT * FROM @tvp";
SQLiteParameter param = command.Parameters.AddWithValue("tvp", importedData.Tables[0]);
command.ExecuteNonQuery();
}
上面的代码抛出一个错误,说@tvp 附近有一个我无法摆脱的语法错误,SQLite 不支持表值参数还是我缺少一些语法?有没有实用的方法来做到这一点?
【问题讨论】:
-
即使是这样:表值参数类型通常需要在服务器上定义无论如何,因此您需要知道定义表的架构 -值参数类型;不过,很确定它不会;我会说“也许是批量复制”,但sqlite doesn't do that either
-
@MarcGravell 根据answer,该查询在 SQL 2008 中有效,我刚刚在 2019 年进行了测试,实际上它抛出了一个错误,需要在服务器中创建类型
-
@MarkBenningfield 它没有回答关于表值参数的原始问题(无论如何我都想知道),但它确实表明我正在尝试做的事情不受支持。
-
@LeandroBardelli 哪个答案?对假定重复项的引用已经是评论,并且该问题的唯一答案已经与重复项中包含的内容有很大不同,老实说,我看不到有人将这些问题标记为重复项的任何其他方式,除非他们不这样做知道什么是表值参数,我认为这种解释不应该成为问题的一部分。