我有一个数组列表,其中包含某些项目的ID。我想从SQL Server CE数据库中一次执行一个多选,并使用我的数组列表,其中包含要选择的项ID,类似于在oracle(ODP.NET)中进行多次更新时的相似内容,如下所述:{ {3}}
您可以将数组作为参数传递。
我想做同样的事情但是对于SQL Server CE而言是多选。有可能吗?
关于我想做什么的草案:
SqlCeCommand = SqlCeConnection.CreateCommand()
SqlCeCommand.CommandText = "SELECT * FROM MyTable WHERE Id=:ids"
SqlCeCommand.CommandType = CommandType.Text
SqlCeCommand.Parameters.Add(":ids", DbType.Int32, ArrayListOfIds, ParameterDirection.Input)
Using reader As System.Data.SqlServerCe.SqlCeDataReader = SqlCeCommand.ExecuteReader()
Using targetDb As Oracle.DataAccess.Client.OracleBulkCopy = New Oracle.DataAccess.Client.OracleBulkCopy(con.ConnectionString)
targetDb.DestinationTableName = "MyTable"
targetDb.BatchSize = 100
targetDb.NotifyAfter = 100
targetDb.BulkCopyOptions = Oracle.DataAccess.Client.OracleBulkCopyOptions.UseInternalTransaction
AddHandler targetDb.OracleRowsCopied, AddressOf OnOracleRowsCopied targetDb.WriteToServer(reader)
targetDb.Close()
End Using
reader.Close()
End Using
答案 0 :(得分:1)
您应该通过构建“IN”子句并在每个循环中添加每个参数来尝试此方法:
SqlCeCommand = SqlCeConnection.CreateCommand()
SqlCeCommand.CommandType = CommandType.Text
Dim sb As New StringBuilder()
Dim i As Integer = 1
For Each id As Integer In ArrayListOfIds
' IN clause
sb.Append("@Id" & i.ToString() & ",")
' parameter
SqlCeCommand.Parameters.Add("@Id" & i.ToString(), DbType.Int32, id, ParameterDirection.Input)
i += 1
Next
答案 1 :(得分:0)
如果您正在调用存储过程,则可以执行以下操作:
我引用的链接可能不是Web上的最佳示例,但“序列化为XML,传递字符串参数,反序列化XML”的概念应该在这里工作