正在从Oracle检索数据

本文关键字:检索 数据 Oracle | 更新日期: 2023-09-27 18:26:48

我想从oracle数据库中检索数据,下面是我的代码,我的sql查询有4个结果,如何在标签中检索4个结果。

代码

OracleConnection con = new OracleConnection(
"Data Source=10.127.240.216/ipcldb;User ID=ipcltos;Password=ipcltos;Unicode=True");   
con.Open();
OracleCommand cmd = new OracleCommand(
"select Initcap(ZZFNAME) ZZFNAME 
from sap_empmst where substr(GBDAT,1,6) = substr(sysdate,1,6) 
and stat2 =3 and werks in('RIGC','IPGC') and plans<99999999 order by persk", con);      
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();     
// int i;
//   for (i = 0; i < 10; i++)
Label1.Text = dr.GetString(0);
con.Dispose();

提前谢谢。

正在从Oracle检索数据

选择使用标签显示多行信息不是一个好选择。我建议使用列表框或组合框或多行文本框或事件网格。(所有用于显示多个项目的控件)

但是您的代码还有其他问题。

这里我将如何写它(仍然使用单一标签)

string cmdText = @"select Initcap(ZZFNAME) ZZFNAME 
                   from sap_empmst 
                   where substr(GBDAT,1,6) = substr(sysdate,1,6) and stat2 =3 
                         and werks in('RIGC','IPGC') 
                         and plans<99999999 
                   order by persk";
using(OracleConnection con = new OracleConnection(.....))
using(OracleCommand cmd = new OracleCommand(cmdText, con))
{
    con.Open();
    using(OracleDataReader dr = cmd.ExecuteReader())
    {
       while(dr.Read())
          Label1.Text += dr.GetString(0);
    }
}

解决单标签问题的方法是使用dr.Read()调用的布尔返回值围绕读取器构建一个循环。然后使用+=将当前记录值连接到标签的前一内容

另一个重要的变化围绕着using语句,该语句确保在异常情况下正确关闭和处理连接、命令和读取器