2016-03-20 22 views
0

In meiner WPF-Anwendung, Oracle-Datenbank und C# verwenden, habe ich diesen Code, um ein Datagrid zu füllen, aber es wirft 'System.IndexOutOfRangeException' und 'Tabelle 0 kann nicht gefunden werden'.Spalte AS Alias ​​löst 'System.IndexOutOfRangeException'

Wenn ich AS Date aus der SQL entfernen, wird keine Ausnahme ausgelöst, aber das Datenraster zeigt den Spaltennamen als to_char(date_, 'dd/mm/yyyy') in der Anwendung

 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]); 
+0

Versuchen einzuschließen „Date“ in „As Date“ in doppelte Anführungszeichen –

+0

@VasylMoskalov, wirft immer noch die gleiche Ausnahme, und nur in einfachen Anführungszeichen, weil es bereits in eine Zeichenfolge – North

+0

Was ist die Implementierung von RetrieveRecords? –

Antwort

1

Sie benötigen, um Ihre Abfrage zu korrigieren. Datum ist der Datentyp in Oracle, deshalb funktioniert der Alias ​​nicht.

Entweder in doppelte Anführungszeichen einschließen oder den Spaltennamen ändern.

diese Abfrage in SQL Versuchen plus..it in Oracle

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

dann versuchen, diese in C#

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

sein könnte, weil Date ein key word ist funktionieren sollte. Versuchen Sie, Ihre Abfrage wie unten durch die Flucht aus dem Stichwort

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