我们有一个旧应用程序,它针对Oracle数据库运行,并使用DataSet,DataTables和TableAdapter。它使用现在已弃用的System.Data.OracleClient,我们正在考虑用DevArt替换这个dll。合并查询返回-1而不是合并的行数
我使用Oracle迁移向导从System.Data.OracleClient迁移到Devart.Data.Oracle。迁移后,所有查询都可以继续正常工作,除了一种类型:MERGE查询。他们仍然合并记录就好(预期的记录被插入/更新)。但是,之前已合并的记录数已返回,但现在它总是返回“-1”。
任何想法可能是什么问题?最好不必手动更新所有合并查询(其中有很多),但是如果更新所有查询是解决此问题的唯一方法,那么这是可以接受的。
处理该由数据集文件生成连接到数据库的代码:
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;
这篇文章可以帮助你。 http://stackoverflow.com/questions/23601304/oracle-merge-statement-not-sticking-using-devart-dotconnect-for-oracle –
@RameshBabu不同的问题:合并在我的情况下是“粘”(更新和插入确实发生)。我有一个返回值的问题。话虽如此,我尝试了所提到的解决方案,但将Direct = true添加到连接字符串只会导致应用程序无法连接。 – Sam
添加一段代码,可以帮助您获得答案。 – Exhausted