列AS别名抛出' System.IndexOutOfRangeException'

时间:2016-03-20 06:31:23

标签: c# wpf oracle exception datagrid

在我的WPF应用程序中,使用Oracle数据库和C#,我有这个代码来填充数据网格,但是它抛出了System.IndexOutOfRangeException',并且找不到表0' 。

如果从SQL中删除AS Date,则不会抛出异常,但数据网格会在应用程序中将列名称显示为to_char(date_, 'dd/mm/yyyy')

        db.SetSql("select sn, activity, attendees, to_char(date_, 'dd/mm/yyyy') AS Date from cpr");

        DataSet result = db.RetrieveRecords();

        datagrid1.ItemsSource = new DataView(result.Tables[0]);

2 个答案:

答案 0 :(得分:1)

您需要更正您的查询。 date是oracle中的数据类型,这就是别名不起作用的原因。

将其括在双引号中或更改自己的列名。

在SQL plus ..中尝试此查询应该可以正常工作

select sn, activity, attendees, to_char(date_, 'dd/mm/yyyy') AS "Date" from cpr

然后在C#中尝试这个

db.SetSql("select sn, activity, attendees, to_char(date_, 'dd/mm/yyyy') AS \"Date\" from cpr");

答案 1 :(得分:1)

可能是因为DateOracle中的key word。尝试通过转义关键字

来更改您的查询,如下所示
    db.SetSql("select sn, activity, attendees, to_char(date_, 'dd/mm/yyyy') AS \"Date\" from cpr");