使用Odbc驱动程序在数据库中查询给定结果,但在c#中不填充数据表,没有错误



刚开始使用windows 11,安装了32位和64位的Oracle驱动程序,用c#编写程序从Oracle数据库中获取数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data.Odbc;
using System.Data;
using System.Data.SqlClient; 

namespace ApexAutoEmailConsol
{
static class ServiceLog
{
static String connectionString = "Dsn=Prod21_32;uid=ebseb;pwd=ebseb";
static string strQuery = string.Empty;

public static string OutstandingInvoices()
{
try
{
OdbcConnection oCon = new OdbcConnection();
oCon.ConnectionString = connectionString;
oCon.Open();
DataTable dtSales = new DataTable();
strQuery = "SELECT * from apps.org_organization_definitions HO";
// if I run above query in Toad it's giving result.
OdbcDataAdapter myAdp = new OdbcDataAdapter(strQuery, oCon);
myAdp.Fill(dtSales);

//Adapter not filling data to the datatable.
if (dtSales.Rows.Count <= 0)
{
return "";
}

return strReturn;
}
catch (Exception Ex)
{
WriteErrorLog(Ex.ToString());
return "";
}
}    
}

当我复制strQuery并在Toad上运行时,得到结果但datatable仍然为空。

有什么问题吗?同样的代码在我的Windows10机器上运行完美。

unCOMMITted数据仅在创建它的会话中可见(如果没有COMMITted,则在会话结束时将ROLLBACK)。如果你不能从另一个会话(c#)中看到数据,那么确保你已经在SQL客户端(蟾蜍)中发出了COMMIT命令。

如果你发出了COMMIT,但仍然看不到数据,那么请确保SQL客户端(Toad)和c#程序都连接到同一个数据库,并且正在查询该数据库的同一个用户模式。

这是一个非常独特的问题,大约2年前我在另一台机器上遇到过这个问题,我无法在Toad中获得一些查询结果。一些查询正在工作,但一些特定的表在连接给出空结果。当时我在环境变量中添加了以下语言设置,并成功了。NLS_LANG = American_America。use UTF8

在我的新机器上使用相同的方法,现在我得到了Visual Studio 2022的结果。

相关内容

  • 没有找到相关文章

最新更新