急!

xiaohuazi 2003-09-11 02:16:24
请问如何用C#得到Oracle存储过程返回的记录集?
...全文
66 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

110,533

社区成员

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

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

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