急!

xiaohuazi 2003-09-11 02:16:24
请问如何用C#得到Oracle存储过程返回的记录集?
...全文
64 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qimini 2003-09-12
  • 打赏
  • 举报
回复
upup
xiaohuazi 2003-09-12
  • 打赏
  • 举报
回复
to all:
在Oracle中用过程返回结果集,必须借助包,返回一个参考游标,我在C#中如何调用这个包中的过程并且如何把这个结果集得到呢?
wolve 2003-09-11
  • 打赏
  • 举报
回复
一样的啊,通过dataadapter执行查询,然后fill(dataset)
雪狼1234567 2003-09-11
  • 打赏
  • 举报
回复
这应该是配置oracle实例的问题

你配时选择tcp/ip, 打上机器IP,端口默认,

比如建好一个实例叫 abc

那你直接通过Provider=MSDAORA.1;Password=11;User ID=user;Data Source=abc

就能访问了

如果实例没配好, c#估计也帮不上忙



不知道你需要什么。。。随便给你贴一个把。。。不过连接ORACLE数据库需要微软的一个补丁。。。不知道你有没有~要不用ole db连接很痛苦的。而且老出错
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration ;

namespace ad
{
/// <summary>
/// adresourse 的摘要说明。
/// </summary>
public class adresourse : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button1;
private string cons="";
private System.Data.OracleClient.OracleConnection myconnection = new System.Data.OracleClient.OracleConnection();

private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack )
{
Session["page"]=0;
}

string ShcameName = ConfigurationSettings.AppSettings["source"];
string ServiceName = ConfigurationSettings.AppSettings["id"];
string service=ConfigurationSettings.AppSettings["catalog"];
cons="User ID="+ShcameName.ToString()+";password="+service+";Data Source="+ServiceName.ToString()+";Persist Security Info=False";
myconnection.ConnectionString = cons;
int k;
k = int.Parse(Session["page"].ToString());
k++;
Session["page"]=k;
if (k!=3)
{
string myselectquery = "SELECT * FROM adresourse";
DataSet mydataset=new DataSet();


System.Data.OracleClient.OracleCommand myselectcommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myconnection.Open();
System.Data.OracleClient.OracleDataAdapter myadapter=new System.Data.OracleClient.OracleDataAdapter();

myadapter.SelectCommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myadapter.Fill(mydataset);
DataGrid1.DataSource=mydataset.Tables[0];
DataGrid1.DataBind();
myconnection.Close();
}
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
void BindGrid()
{
string myselectquery = "SELECT * FROM adresourse";
DataSet mydataset=new DataSet();
myconnection.ConnectionString = cons;
System.Data.OracleClient.OracleCommand myselectcommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myconnection.Open();
System.Data.OracleClient.OracleDataAdapter myadapter=new System.Data.OracleClient.OracleDataAdapter();
myadapter.SelectCommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myadapter.Fill(mydataset);
DataGrid1.DataSource=mydataset.Tables[0];
DataGrid1.DataBind();
myconnection.Close();
}
private void Button1_Click(object sender, System.EventArgs e)
{
string str="insert into adresourse(locationid,locationdesc,width,height,url) VALUES ('','',0,0,'')";
myconnection.Open();
System.Data.OracleClient.OracleCommand comm =new System.Data.OracleClient.OracleCommand(str,myconnection);
try
{
comm.ExecuteNonQuery();
//Message.InnerHtml = "<b>已插入记录</b><br/>" + updateCmd;
DataGrid1.EditItemIndex = -1;}
catch{}
Session["page"]=1;
myconnection.Close();
BindGrid();
}



private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=e.Item.ItemIndex;
DataGrid1.DataBind();
}

private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
DataBind();
Session["page"]=1;
string myselectquery = "SELECT * FROM adresourse";
DataSet mydataset=new DataSet();
System.Data.OracleClient.OracleCommand myselectcommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myconnection.Open();
System.Data.OracleClient.OracleDataAdapter myadapter=new System.Data.OracleClient.OracleDataAdapter();
myadapter.SelectCommand = new System.Data.OracleClient.OracleCommand(myselectquery, myconnection);
myadapter.Fill(mydataset);
DataGrid1.DataSource=mydataset.Tables[0];
DataGrid1.DataBind();
myconnection.Close();
}

private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
String updateCmd = "UPDATE adresourse SET locationid='";
updateCmd+=((TextBox)e.Item.Cells[2].Controls[0]).Text+"', locationdesc ='"+((TextBox)e.Item.Cells[3].Controls[0]).Text +"', width='"+((TextBox)e.Item.Cells[5].Controls[0]).Text +"',"
+ "height = '"+((TextBox)e.Item.Cells[4].Controls[0]).Text +"', url ='"+((TextBox)e.Item.Cells[6].Controls[0]).Text +"' where id='"+e.Item.Cells[1].Text +"'" ;
myconnection.Open();
System.Data.OracleClient.OracleCommand comm =new System.Data.OracleClient.OracleCommand(updateCmd,myconnection);

try
{
comm.ExecuteNonQuery();
//Message.InnerHtml = "<b>已更新记录</b><br/>" + updateCmd;
DataGrid1.EditItemIndex = -1;

}
catch
{}

myconnection.Close();
Session["page"]=1;
BindGrid();

}

private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
String updateCmd = "delete from adresourse where id='"+ e.Item.Cells[1].Text+"'";
myconnection.Open();
System.Data.OracleClient.OracleCommand comm =new System.Data.OracleClient.OracleCommand(updateCmd,myconnection);

try
{
comm.ExecuteNonQuery();
//Message.InnerHtml = "<b>已更新记录</b><br/>" + updateCmd;
DataGrid1.EditItemIndex = -1;

}
catch
{}

myconnection.Close();
Session["page"]=1;
BindGrid();
}

}
}

yqhi 2003-09-11
  • 打赏
  • 举报
回复
up
Soking 2003-09-11
  • 打赏
  • 举报
回复
DataSet dataSet = new DataSet();
Connection.Open();
OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters ); //BuildQueryCommand生成一个sql命令
sqlDA.Fill( dataSet, tableName ); //tableName 为填充的表名
Connection.Close();
return dataSet //得到记录集
Soking 2003-09-11
  • 打赏
  • 举报
回复
DataSet dataSet = new DataSet();
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters );
sqlDA.Fill( dataSet, tableName );
Connection.Close();
return dataSet
csdn_bob 2003-09-11
  • 打赏
  • 举报
回复
如果是1.0,就设置参数的方式
如para.Direction = ParameterDirection.Output;
然后取就行了para.Value
dotnba 2003-09-11
  • 打赏
  • 举报
回复
看看System.Data.OracleClient
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以
酷窗版演示:http://www.edd8.com/bbs/index.asp?style=0 简装版演示:http://www.edd8.com/bbs/index2.asp 一点点论坛(http://www.edd8.com/bbs)使用说明 欢迎大家下载使用一点点论坛,在使用论坛前,请认真阅读以下内容: ===================================== 论坛:一点点论坛(http://www.edd8.com/bbs) 主页:一点点星空驿站(http://www.edd8.com/) 站长:叮咚虫(e_Mail:b_li@163.com) 版本:EDD8 Ver.2003 for DV =====================================   一点点论坛是建立在动网论坛基础上的ASP互动论坛,从动网Var5.b109开始论坛结构便开始脱离动网,与动网升级一起,本论坛本身也同时实现了动网新的功能,到519的发布,本人常得论坛本身已功能基本完善,所以决定与动网完全脱离,到动网Final的出现,本论坛也决定不再跟随动网升级了,本人全面对原来的论坛进行了代码优化和版面重排,并升级了部分功能代码,完成了现在这样的论坛。使论坛已经完全脱离了动网,以后也不可以随动网一起升级了!   所以选择本论坛的朋友请先明白,如果采用了本论坛的数据结构,以后就不可以和动网一起升级了,而现有的动网Final版的数据库和本论坛的数据库也是不兼容的!对于动网V5.b519的用户,本人同时在压缩包里提供了升级文件,可以把你519的数据库升级成和本论坛一致的数据结构!   由于一些朋友催得较,部分功能还是没有完善的(但不会出错),我以后也会给出升级包的。所以决定使用本论坛的朋友,请一定要到本站论坛的“站务办公室”进行指定的留言签名,以好我第一时间通知大家升级!   论坛中使用到的部分插件并没有一同奉上,原因是我还没完成代码优化,请过几天到我的论坛上下载。可以下载的插件主要有:社区银行、网络拳皇、可乐吧台球、五子棋等等…… ===================================== 主要特色功能说明: ◎ 双版面设计,用户可以根据不同爱好选择不同的版式(酷窗版和精简版),系统会记录用户的选择,不用重复选择,也不会出现版面混淆等现象; ◎ 发贴回贴互动功能,给用户随机的互动事件,增加用户的参与兴趣; ◎ 增强的UBB代码和JS代码,新增的买卖贴、定时贴等十几种特色功能UBB代码; ◎ 贴子功能加强,增加互动鲜花、鸡蛋、金钱、炸弹等功能,并保存数据作为用户在论坛的人缘依据; ◎ 不好说了,等你去发掘吧,不然又说我叫卖了…… ====================================== 安装说明: 解压就可以了,数据库名称和路径有变动时不要忘了在CONN。ASP中进行相应修改。 (注意:当论坛中一个贴子也没有时,论坛明星会出错,但当你加入贴子后就正常了,大家不要惊慌) 升级:(对519),解压后把你的原519数据库覆盖现数据库,再执行根目录下的UPDATE。ASP文件就行了,如果没有升级成功的提示,说明你的数据不能进行升级! (注意:数据库的升级应做了备份,并在本机上进行!) ====================================== 最后一点说明: 由于论坛本来是打算自己用的,所以在设计的过程中部分变量已经去掉,不能从后台设置了(如表格边框),请大家最好保持现有的风格。 如果还不问题,可以到我的论坛上来交流。??注意,由于本人时间不限,技术支持是有限的,请不要过于强求!

110,530

社区成员

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

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

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