[英]Retrieving value in C# from oracle database
我不知道為什么,但嘗試從 oracle 數據庫中的表中獲取最大 integer 值時遇到錯誤:這是代碼:
string oradb = "Data Source=";
oradb = oradb + Login.db + ";";
oradb = oradb + "User Id=" + Login.user;
oradb = oradb + ";Password=" + Login.pass + ";";
OracleConnection conn = new OracleConnection(oradb);
conn.Open();
string term = GetTerminal(terminal);
string sql = "SELECT tallynumber from "+frmSchemas.schema + ".tallies" ;
MessageBox.Show(sql);
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
MessageBox.Show("1");
Int64 TallyNo = dr.GetInt32(0);
// lblTallyNo.Text = (TallyNo).ToString()
返回值應該是: 72332 如果有任何相關性
如果你想從一個table
中找到max value
, query
應該是
SELECT max(tallynumber) from ....
如果你想獲得max, min etc
等值,你應該調用ExecuteScalar()
而不是ExecuteReader().
所以你的代碼可以變成
string sql = "SELECT Max(tallynumber) from "+frmSchemas.schema + ".tallies"; MessageBox.Show(sql);
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
object val = cmd.ExecuteScalar();
int res = int.MinValue;
//MessageBox.Show("1");
if(int.TryParse(val.ToString(), out res))
Int64 TallyNo = res;
您缺少dr.Read();
在訪問值之前:
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
Int64 TallyNo = dr.GetInt32(0);
您可以嘗試以下
string sql = "SELECT max(tallynumber) from "+frmSchemas.schema + ".tallies" ;
MessageBox.Show(sql);
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
MessageBox.Show("1");
if (dr.Read())
{
Int64 TallyNo = dr.GetInt32(0);
}
編輯:
if(dr.Read())
{
Int64 TallyNo = Convert.ToInt64(dr["tallynumber"].ToString());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.