如何使用c#从数据库返回一个整数

本文关键字:一个 整数 返回 何使用 数据库 | 更新日期: 2023-09-27 18:06:13

大家好。我从一个表中选择一个列,它返回一个带数字的字段。我希望在c#中返回这个数字为整数,以便我可以在获得它后将整数增加1。我使用visual studio 2010, c#和oracle作为我的数据库

这是我的代码* *你好男人。我照你说的试过了,但没有用。它正在崩溃——+ $exception{"无法强制转换'Oracle.DataAccess.Client '类型的对象。"OracleDataReader'类型为'System.IConvertible'。"}系统。异常{系统。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;
    } 

如何使用c#从数据库返回一个整数

你的评论表明结果将是一个OracleDataReader -在这种情况下使用


var reader = dba.QueryDatabase(sqlQuery);
if(reader.Read())
{
  return reader.GetInt32(0);
}
// else error
throw new Exception("no result found");

可以使用Int32结构的ParseTryParse方法。

编辑:我在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);

有关更多信息,您可以查看我提到的文档