【发布时间】:2020-11-30 05:24:11
【问题描述】:
我有一个非常具体的问题,针对一个非常具体的问题。我的开发环境非常简单:Oracle 11g 数据库、C# Web 应用程序(使用 ASP)。
为了连接到我的数据库,我使用了 OracleManagedDataAccess nuget 包,它一直运行良好,直到上个月。我能够毫无问题地在我的表上添加列,但是现在,它返回一个异常:将我的 DataReader 加载到 DataTable 时索引超出范围。
string connectionString = "myConnectionStringToTheDB";
string requete = "SELECT * FROM MyTable";
using (var connexion = new OracleConnection(connectionString))
{
connexion.Open();
using (var commande = new OracleCommand(requete, connexion))
using (var dr = commande.ExecuteReader())
using (var datatable = new DataTable())
{
datatable.Load(dr); // => crashes here
foreach (DataRow row in datatable.Rows)
{
var campagne = GetFromDataReader<Campagne>(row, connectionString);
campagne.CodeSource = row["CODE_SOURCE"].ToString();
result.Add(campagne);
}
}
}
此代码在应用程序运行时有效,没问题。然后我在我的表中添加一列。然后我再次运行此代码,不...我必须停止并重新启动应用程序(在 IIS 上)才能使其正常运行。
事实是,当我的查询包含“*”时,它会崩溃。如果我列出表的所有列,它就可以工作。 这个问题突然无缘无故地发生了,这真的很烦人,因为即使有用户连接到应用程序,我也需要向我的表中添加列。这些新添加的列当然要等到程序重启后才会使用……
你知道如何解决这个问题吗?
谢谢!
【问题讨论】:
标签: c# datatable oracle11g schema