大家好。我从表中选择一个列,该列返回带有数字的字段。我希望将此数字返回到c#中的整数,以便在获取它之后我可以将整数增加1。我使用visual studio 2010,C#和oracle作为我的数据库
这是我的代码: **嗨,大家好。我按照你告诉我的方式尝试但是没有用。它正在崩溃 - + $ exception {“无法将'Oracle.DataAccess.Client.OracleDataReader'类型的对象强制转换为'System.IConvertible'。”} System.Exception {System.InvalidCastException}
**
public static int GetRunNumber(string date)
{
int result;
DatabaseAdapter dba = DatabaseAdapter.GetInstance();
string sqlQuery = "SELECT RUN FROM LOAD_CONTROL " +
"WHERE START_DATE = (SELECT MAX(START_DATE) " +
"FROM LOAD_CONTROL " +
"WHERE LOAD_DATE = to_date('" + date + "', 'dd/mm/yyyy')) " +
"AND LOAD_DATE = to_date('" + date + "', 'dd/mm/yyyy') ";
result = Convert.ToInt32(dba.QueryDatabase(sqlQuery));
return result;
}
答案 0 :(得分:2)
您的评论表明结果将是OracleDataReader - 在这种情况下使用
var reader = dba.QueryDatabase(sqlQuery);
if(reader.Read())
{
return reader.GetInt32(0);
}
// else error
throw new Exception("no result found");
答案 1 :(得分:2)
您可以使用Int32
结构的Parse
或TryParse
方法。
编辑:我在Oracle的文档中找到了这个解决方案。这是一种不同的方法,但可能对你有用。
// Connection string for your app
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
// Creates new connection object.
OracleConnection con = new OracleConnection(constr);
con.Open();
// Change below with your query.
string cmdstr = "SELECT * FROM EMPINFO";
OracleConnection connection = new OracleConnection(constr);
OracleCommand cmd = new OracleCommand(cmdstr, con);
OracleDataReader reader = cmd.ExecuteReader();
// Returns the first column of the first row returned from your query and
// converts it to Int32. You should replace '0' with the column no you desire.
return reader.GetInt32(0);
有关详细信息,请查看我提到的document。