【发布时间】:2015-11-15 07:28:27
【问题描述】:
我们有一个针对 Oracle 数据库运行并使用 DataSet、DataTable 和 TableAdapter 的旧应用程序。它使用现已弃用的 System.Data.OracleClient,我们希望用 DevArt 中的那些替换这个 dll。
我使用 Oracle 迁移向导从 System.Data.OracleClient 迁移到 Devart.Data.Oracle。迁移后,所有查询都可以正常工作,除了一种类型:MERGE 查询。他们仍然可以很好地合并记录(插入/更新预期的记录)。但是,之前返回的是合并的记录数,现在它总是返回“-1”。
知道问题可能是什么吗?最好不必手动更新所有合并查询(有很多),但如果更新所有查询是解决此问题的唯一方法,则可以接受。
处理连接数据库的代码由DataSet文件生成:
Devart.Data.Oracle.OracleCommand command = "MERGE INTO [...]";
System.Data.ConnectionState previousConnectionState = command.Connection.State;
if ((command.Connection.State & System.Data.ConnectionState.Open) != System.Data.ConnectionState.Open)
{
command.Connection.Open();
int returnValue;
try
{
returnValue = command.ExecuteNonQuery();
}
finally
{
if (previousConnectionState != System.Data.ConnectionState.Closed)
{
command.Connection.Close();
}
}
}
return returnValue;
【问题讨论】:
-
这篇关于 SO 的帖子可能会对您有所帮助。 stackoverflow.com/questions/23601304/…
-
@RameshBabu 不同的问题:在我的情况下合并确实“坚持”(更新和插入确实发生)。我的返回值有问题。话虽如此,我尝试了上述解决方案,但在连接字符串中添加 Direct=true 只会使应用程序无法连接。
-
添加一段代码,或许可以帮助你得到答案。
-
@Exhausted 其代码由数据集生成,但我加了。