我在C#中如何返回,在Oracle 中的数据集合!急

LIHY70 2005-12-22 09:54:09
public DataTable GetWrt(string UserId)
{
try
{
if(MyConn.State==ConnectionState.Closed)
MyConn.Open();
Cmd=new OracleCommand("xh_Test.GetWrt",MyConn);
Cmd.CommandType=CommandType.StoredProcedure;
Cmd.Parameters.Add("p_rec",OracleType.Cursor);
Cmd.Parameters["p_rec"].Direction=ParameterDirection.Output;
Cmd.Parameters.Add("p_UserId",UserId);
Cmd.ExecuteNonQuery();
return (DataTable)Cmd.Parameters["p_rec"].Value;
}
catch(Exception ex)
{
MessageBox.Show("GetUser 失败:"+ex.Message+"\r\t"+ex.ToString(),Title,
MessageBoxButtons.OK,MessageBoxIcon.Error);
return null;
}
finally
{
MyConn.Close();
}
}
这么写对么??为什么总报错!
如果返回的记录集合为空,我如何判断
我可以这么写么return null;
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeusvenus 2005-12-22
  • 打赏
  • 举报
回复
三个问题:
关于记录集合为空可以通过判断DataTable内的Rows等记录数是否0来返回。
关于C#操作oracle,用oracle client出错几率较大,推荐使用oledb。
操作oracle有时候成功执行操作也会弹出其他提示,所以产生一种情况就是及时你datatable获取到数据了仍然有exception,所以把判断datatable的记录数是否为0再作相应处理放到finally中较妥。
peak_weng 2005-12-22
  • 打赏
  • 举报
回复
Cmd=new OracleCommand("xh_Test.GetWrt",MyConn);
Cmd.CommandType=CommandType.StoredProcedure;
Cmd.Parameters.Add("p_rec",OracleType.Cursor);
Cmd.Parameters["p_rec"].Direction=ParameterDirection.Output;
Cmd.Parameters.Add("p_UserId",UserId);
DataAdapter=new OracleDataAdapter();
DataAdapter.SelectCommand=Cmd;
DataAdapter.Fill(dt);
LIHY70 2005-12-22
  • 打赏
  • 举报
回复
ding
LIHY70 2005-12-22
  • 打赏
  • 举报
回复
我在oralce 中已经写好了package(xh_Test),
我不希望在程序中每次执行一次,都写一次语句!
有更好的方法么?
vickyyu 2005-12-22
  • 打赏
  • 举报
回复
try
{
string sql= @"
declare
AAA varchar2(1000);
BBB varchar2(1000);
begin
AAA:='AAAA';
BBB:='BBBB';
OPEN :p_cursor FOR
SELECT AAA as TempA
FROM dual;

OPEN :p_cursor2 FOR
SELECT BBB as tempB
FROM dual;

OPEN :p_cursor3 FOR
SELECT * from bumen;

end;";
if (this.oracleConnection1.State!=ConnectionState.Open)
this.oracleConnection1.Open();

OracleCommand cmd = this.oracleConnection1.CreateCommand();

cmd.CommandText= sql.Replace("\r","");
OracleParameter oraParmm = cmd.Parameters.Add(":p_cursor",OracleType.Cursor);
oraParmm.Direction = ParameterDirection.Output;

OracleParameter oraParmm2 = cmd.Parameters.Add(":p_cursor2",OracleType.Cursor);
oraParmm2.Direction = ParameterDirection.Output;

OracleParameter oraParmm3 = cmd.Parameters.Add(":p_cursor3",OracleType.Cursor);
oraParmm3.Direction = ParameterDirection.Output;

OracleDataAdapter objAda = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
objAda.Fill(ds);

MessageBox.Show(ds.Tables.Count.ToString());
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧