string strConn = "Data source = XE; user = system; Password = 123456;";
OracleConnection oracleConn = new OracleConnection(strConn);
oracleConn.Open();
//if (oracleConn.State == ConnectionState.Open)
//{
// MessageBox.Show("连接成功");----连接是成功的
// return;
//}
string strSql = "select * from student;";
OracleCommand sqlCmd = new OracleCommand(strSql, oracleConn);
OracleDataAdapter oda = new OracleDataAdapter(sqlCmd);
DataTable dt = new DataTable();
try
{
if (oracleConn.State == ConnectionState.Open)
{
int xx = 1; // 验证是连接成功的
}
oda.Fill(dt); // 但这儿出错了,catch不到具体原因
}
catch (System.IndexOutOfRangeException error)
{
string strErr = error.Message;
Console.Write(strErr);
}调试窗口有这个错误:
A first chance exception of type 'System.Data.OracleClient.OracleException' occurred in System.Data.OracleClient.dll
你捕获了一个具体的错误类型,而忽略了其他错误类型,结果把数据库错误给忽略了。不知道具体错误类型的情况下,就直接用基类Exception 来捕获
`用这个可以知道具体的异常。捕获一下看看吧。
OracleDataAdapter oda = new OracleDataAdapter(sqlCmd);
/*--------------------*/
OracleDataAdapter oda = new OracleDataAdapter(strSql, oracleConn);
andle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statemen
tHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidD
escriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statemen
tHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behav
ior)
at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior
behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandB
ehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[]
datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand co
mmand, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startR
ecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at HelloWorld.DataOracle.Main(String[] args) in C:\Documents and Settings\007
924\My Documents\Visual Studio 2008\Projects\HelloWorld\HelloWorld\Program.cs:li
ne 31
改为
string strSql = "select * from student";也就是去掉最后的封号,Oracle的外部查询不支持带封号的