刚开始使用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机器上运行完美。
unCOMMIT
ted数据仅在创建它的会话中可见(如果没有COMMIT
ted,则在会话结束时将ROLLBACK
)。如果你不能从另一个会话(c#)中看到数据,那么确保你已经在SQL客户端(蟾蜍)中发出了COMMIT
命令。
如果你发出了COMMIT
,但仍然看不到数据,那么请确保SQL客户端(Toad)和c#程序都连接到同一个数据库,并且正在查询该数据库的同一个用户模式。
这是一个非常独特的问题,大约2年前我在另一台机器上遇到过这个问题,我无法在Toad中获得一些查询结果。一些查询正在工作,但一些特定的表在连接给出空结果。当时我在环境变量中添加了以下语言设置,并成功了。NLS_LANG = American_America。use UTF8
在我的新机器上使用相同的方法,现在我得到了Visual Studio 2022的结果。