gpt4 book ai didi

oracle - 为什么返回的 OleDbConnection.GetSchema ("Columns") 没有行,而相同的代码适用于 OracleConnection?

转载 作者:行者123 更新时间:2023-12-01 15:03:37 26 4
gpt4 key购买 nike

我创建了一个实用方法来从数据库表中获取架构。在本例中为 Oracle 11 数据库。

    public static DataTable GetColumnsSchemaTable(DbConnection cnctn, string tableName)
{
DataTable schemaTable;

string[] restrictions = new string[3] { null, tableName, null };
schemaTable = cnctn.GetSchema("Columns", restrictions);

/* table name is case sensitive and in XXXX db table names are UPPER */
if (schemaTable.Rows.Count == 0)
{
restrictions = new string[3] { null, tableName.ToUpper(), null };
schemaTable = cnctn.GetSchema("Columns", restrictions);
}
return schemaTable;
}

当使用 System.Data.OracleClient 提供程序工厂创建 cnctn 时,这工作正常。使用 System.Data.OleDb 提供程序工厂创建时,该表没有行。我有另一种实用方法来获取连接字符串:

    public static string GetDbConnectionString(DbConnection cnnctn, string provider, string server, string dbName, string user, string pwd)
{
if (cnnctn is OleDbConnection)
{
string usedProvider;
if (provider == null)
usedProvider = "msdaora";
else
usedProvider = provider;

return string.Format("Provider={0};Data Source={1};User Id={2};Password={3};",
usedProvider, dbName, user, pwd);
}
else if (cnnctn is System.Data.OracleClient.OracleConnection)
{
return string.Format("Data Source={0};User Id={1};Password={2};",
dbName, user, pwd);
}
else if (cnnctn is Oracle.DataAccess.Client.OracleConnection)
{
return string.Format("Data Source={0};User Id={1};Password={2};",
dbName, user, pwd);
}
else if (cnnctn is SqlConnection)
{
return string.Format("Data Source={0}; Initial Catalog={1}; User Id={2}; Password={3};",
server, dbName, user, pwd);
}
return string.Empty;
}

并且数据库连接有效(我在尝试获取架构之前删除了行)。我们将不胜感激。

谢谢和最好的问候 - Matti

最佳答案

好的。我整理好了。很久以前我制作这段代码只是为了现在已弃用的 OracleClient,并留下了使用其他连接/提供者工厂的可能性。我不记得限制因连接而异。所以正确的用法是:

string[] restrictions = new string[4] { null, null, tableName, null }; 

用于 OleDbConnection。

关于oracle - 为什么返回的 OleDbConnection.GetSchema ("Columns") 没有行,而相同的代码适用于 OracleConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8066421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com