C# Ole Db通信在powershell中工作,而不是在c中#
我试图通过Ole Db HDA从ABB 800xa historian接收信息。我在powershell中有一个工作脚本,但当我在C#visual studio控制台应用程序项目中执行相同操作时,我会得到一个退出代码0xc0000374 Powershell脚本和我的c代码之间有什么区别? 注意:在C#中,通过Ole Db的连接可以工作,有些命令可以工作,但有些命令不行 我的Powershell脚本:C# Ole Db通信在powershell中工作,而不是在c中#,c#,powershell,oledb,C#,Powershell,Oledb,我试图通过Ole Db HDA从ABB 800xa historian接收信息。我在powershell中有一个工作脚本,但当我在C#visual studio控制台应用程序项目中执行相同操作时,我会得到一个退出代码0xc0000374 Powershell脚本和我的c代码之间有什么区别? 注意:在C#中,通过Ole Db的连接可以工作,有些命令可以工作,但有些命令不行 我的Powershell脚本: clear-host $objConn = New-Object System.Data.Ol
clear-host
$objConn = New-Object System.Data.OleDb.OleDbConnection ("Provider=ABB OLE DB Provider for HT;Persist Security Info=False;User ID="";Data Source="";Location="";Mode=ReadWrite;Extended Properties=""")
$sqlCommand = New-Object System.Data.OleDb.OleDbCommand("GET_HISTORY(OBJECTHELPER=History Log Template Dion)")
$sqlCommand.Connection = $objConn
$objConn.open()
write-host $sqlCommand.CommandText
$reader = $sqlCommand.ExecuteReader()
$Counter = $Reader.FieldCount
while ($Reader.Read()) {
for ($i = 0; $i -lt $Counter; $i++) {
@{ $Reader.GetName($i) = $Reader.GetValue($i); }
}
}
$reader.Close()
$sqlCommand.Dispose()
$objConn.close()
$objConn.Dispose()
我的C代码
static void Main(字符串[]args)
{
字符串connetionString=null;
OLEDB连接cnn;
OleDbCommand cmd;
字符串sql=null;
OLEDB数据读取器;
connetionString=“Provider=ABB OLE DB Provider for HT;持久化安全信息=False;用户ID=\“\”;数据源=\“\”;位置=\“\”;模式=ReadWrite;扩展属性=\“\”;
//对象助手
sql=“获取历史记录(OBJECTHELPER=历史记录模板Dion)”;
cnn=新的OLEDB连接(连接字符串);
尝试
{
cmd=新的OleDbCommand(sql、cnn);
cnn.Open();
reader=cmd.ExecuteReader();
Console.WriteLine(“值:”);
while(reader.Read())
{
对于(int i=0;i
经过一个下午的尝试后,我发现,在针对.net 4.0时,System.Data.OleDb的功能与预期的一样。所有其他经过测试的.net版本(4.5、4.6和4.7.2)都无法运行。经过一个下午的尝试后,我发现,当以.net 4.0为目标时,System.Data.OleDb的功能与预期一致。所有其他经过测试的.net版本(4.5、4.6和4.7.2)dit都不工作。请参阅以下内容:。@DionBartelen您似乎发布了一个异常
代码。您将其包装在一个try catch
中,异常消息告诉您什么?在搜索了异常
代码后,我找到了这篇相关文章:()@RyanWilson没有异常代码,因为程序退出时带有退出代码0x0000374。我第一次在google上发现这可能是堆内存问题,但由于powershell确实可以工作,我对此表示怀疑。请参阅以下内容:。@DionBartelen看起来您发布了一个异常。您将其包装在一个try catch
中,异常消息告诉您什么?在搜索了异常
代码后,我找到了这篇相关文章:()@RyanWilson没有异常代码,因为程序退出时带有退出代码0x0000374。我第一次在google上发现这可能是堆内存问题,但因为powershell确实有效,我对此表示怀疑。
static void Main(string[] args)
{
string connetionString = null;
OleDbConnection cnn;
OleDbCommand cmd;
string sql = null;
OleDbDataReader reader;
connetionString = "Provider=ABB OLE DB Provider for HT;Persist Security Info=False;User ID=\"\";Data Source=\"\";Location=\"\";Mode=ReadWrite;Extended Properties=\"\"";
//OBJECTHELPER
sql = "GET_HISTORY(OBJECTHELPER=History Log Template Dion)";
cnn = new OleDbConnection(connetionString);
try
{
cmd = new OleDbCommand(sql, cnn);
cnn.Open();
reader = cmd.ExecuteReader();
Console.WriteLine("Values:");
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine(reader.GetName(i) + " - " + reader.GetValue(i));
}
}
reader.Close();
cmd.Dispose();
cnn.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error while executing command 2 !");
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}