Hallo,
ich bin dabei mich in .NET einzuarbeiten und möchte mittels ODP.NET (Oracle Data Provider) eine einfache SQL-Query ausführen.
Leider erhalte ich immer eine InvalidCastException oder eine InvalidOperationException und kann den Fehler auch nach stundenlangem Suchen/googeln nicht finden. Meiner Ansicht nach müsste der Code einwandfrei funktionieren. Da ich Anfänger bin und erst seit einigen Tagen mit .NET arbeite kann es gut sein, dass das Problem auch an irgendwelchen IDE-Einstellelungen (Assembly-/Verweiseinstellungen?) oder ähnlichem liegt.
[highlight=c#]
public ActionResult Index()
{
OracleConnection conn = null;
try
{
conn = new OracleConnection("Data Source=asdf;User ID=as;Password=df;");
conn.Open();
string cmdText = "select count(*) from delivery";
OracleCommand cmd = new OracleCommand(cmdText, conn);
cmd.CommandType = CommandType.Text;
using (OracleDataReader dr = cmd.ExecuteReader())
{
rd.Read(); // Edit: gerade noch eingefügt
string typ = dr.GetValue(0).GetType().Name; // System.InvalidOperationException
int count = dr.GetInt16(0); // System.InvalidCastException
}
}
catch (InvalidCastException ice)
{
Trace.Write(ice.StackTrace);
}
catch (Exception e)
{
Trace.Write(e.StackTrace);
}
finally
{
if (conn != null)
conn.Close();
}
return View();
}
[/highlight]
Zuerst hatte ich nur den "int count = dr.GetInt16(0);" Aufruf drin, aber als ich das nicht zum Laufen bekommen hab, habe ich den getType Aufruf eingebaut, welcher auch nicht funktioniert - hier sieht es so aus, als ob die Verbindung nicht richtig hergestellt ist, aber das Open() funktioniert problemlos.
Die Datenbank ist unter diesem Alias aus einem Delphi Programm oder Oracle SQL-Worksheet problemlos zu erreichen und die Query gibt auch auf jeden Fall einen Wert zurück.
Oracle Version: 9.2.0.8.0
ODP.NET-Version: 9.2.0.7.0
Vielen Dank für die Hilfe.
Gruß Rev
ich bin dabei mich in .NET einzuarbeiten und möchte mittels ODP.NET (Oracle Data Provider) eine einfache SQL-Query ausführen.
Leider erhalte ich immer eine InvalidCastException oder eine InvalidOperationException und kann den Fehler auch nach stundenlangem Suchen/googeln nicht finden. Meiner Ansicht nach müsste der Code einwandfrei funktionieren. Da ich Anfänger bin und erst seit einigen Tagen mit .NET arbeite kann es gut sein, dass das Problem auch an irgendwelchen IDE-Einstellelungen (Assembly-/Verweiseinstellungen?) oder ähnlichem liegt.
[highlight=c#]
public ActionResult Index()
{
OracleConnection conn = null;
try
{
conn = new OracleConnection("Data Source=asdf;User ID=as;Password=df;");
conn.Open();
string cmdText = "select count(*) from delivery";
OracleCommand cmd = new OracleCommand(cmdText, conn);
cmd.CommandType = CommandType.Text;
using (OracleDataReader dr = cmd.ExecuteReader())
{
rd.Read(); // Edit: gerade noch eingefügt
string typ = dr.GetValue(0).GetType().Name; // System.InvalidOperationException
int count = dr.GetInt16(0); // System.InvalidCastException
}
}
catch (InvalidCastException ice)
{
Trace.Write(ice.StackTrace);
}
catch (Exception e)
{
Trace.Write(e.StackTrace);
}
finally
{
if (conn != null)
conn.Close();
}
return View();
}
[/highlight]
Zuerst hatte ich nur den "int count = dr.GetInt16(0);" Aufruf drin, aber als ich das nicht zum Laufen bekommen hab, habe ich den getType Aufruf eingebaut, welcher auch nicht funktioniert - hier sieht es so aus, als ob die Verbindung nicht richtig hergestellt ist, aber das Open() funktioniert problemlos.
Die Datenbank ist unter diesem Alias aus einem Delphi Programm oder Oracle SQL-Worksheet problemlos zu erreichen und die Query gibt auch auf jeden Fall einen Wert zurück.
Oracle Version: 9.2.0.8.0
ODP.NET-Version: 9.2.0.7.0
Vielen Dank für die Hilfe.
Gruß Rev
Comment