을 던져 나는 다음과 같은 코드가 있습니다 코드가 잘 때로는 다른 사람들이 눈치 디버깅 후 나던 작동 어떤 이유OracleDataReader HasRows 잘못된 번호 예외
int count = 0;
OracleDataReader dr;
parameters = new Dictionary<string, string>();
parameters.Add("Username", UserName);
query = "Select KEY from TABLE1 where USERID=:Username AND KEY IN(";
foreach (string Location in Locations)
{
query = query + ":Loc" + count.ToString() + ",";
parameters.Add("Loc" + count.ToString(), Location);
count++;
}
query=query.TrimEnd(',');
query = query + ")";
dr=objConexion.ExecuteQuery(query, parameters, objConexion.OracleCnn);
public OracleDataReader ExecuteQuery(String query, Dictionary<string,string> Parameters, OracleConnection oracleCnn)
{
OracleDataReader OracleDr;
OracleCommand OracleCmd;
try
{
OracleCmd = oracleCnn.CreateCommand();
OracleCmd.CommandText = query;
foreach (KeyValuePair<string, string> kvp in Parameters)
{
OracleCmd.Parameters.AddWithValue(kvp.Key, kvp.Value);
}
OracleCmd.Prepare();
OracleDr = OracleCmd.ExecuteReader();
}
catch
{
OracleDr = null;
}
return OracleDr;
}
을 그것이 작업의를 나던 때 Datareader는 "HasRows"메서드, 특히 잘못된 번호 예외에 대한 예외가 있습니다. 결과를 직접 DBMS에서 실행하려고 시도하고 완벽하게 실행됩니다. 왜이 예외가 발생하는지 알 수 있습니까? 내가 뭘 놓치고 있니?.
예외를 제공 할 수 있습니까? 아니면 그냥 InvalidNumber입니까? - 문자열을 숫자로 변환하지 못하면 InvalidNumber가 oracle에서 throw됩니다. 표 형식에 열 설명을 입력하십시오. – Christian13467
ORA-01722 : 번호가 잘못되었습니다 (디버그에서 볼 때) : HasRows \t 'dr.HasRows'가 'System.Data.OracleClient.OracleException'예외를 생성했습니다. 그들은 내가 선택하는 키 열은 INTEGER이고 UserID는 varchar2입니다 – user3255067