知道的话比较简单:怎么样执行了一个存储过程,然后返回数据。

Hs_Boy 2003-08-18 04:07:21
我在一个存储过程里最后用用select 语句返回一个结果集,这个结果集是我从从一个临时表里取出来的:select * from #temtable
在一个窗体里我是这么写的:
try
{
。。。。。。

SQLDataAdapter.SelectCommand.CommandText = sProcName;
SQLDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
SQLDataAdapter.SelectCommand.UpdatedRowSource = UpdateRowSource.None;
//添加参数
for (int iCount = 0;iCount < pzParams.Length;iCount++)
{
SQLDataAdapter.SelectCommand.Parameters.Add(pzParams[iCount]);
}

//填充结果集
SqlDataReader sdr = SQLDataAdapter.SelectCommand.ExecuteReader();
DataTable dtAnswer = sdr.GetSchemaTable();

执行到这里dtAnswer = null,
换成:
//填充结果集
SqlDataReader sdr = SQLDataAdapter.SelectCommand.ExecuteNonQuery();
SQLDataAdapter.Fill(DataSet,"Record");
DataTable dtAnswer = DataSet.Tables["Record"];
照样:dtAnswer = null

而在QUERY里手工调用这个存储过程是有结果返回的
这个是怎么回事?


...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hs_Boy 2003-08-18
  • 打赏
  • 举报
回复
其实我的问题不是怎么样调用存储过程,
我现在是存储过程执行完成了,但是却没有返回结果集。
在存储过程里我是用select * from #temptable的,
Hs_Boy 2003-08-18
  • 打赏
  • 举报
回复
我觉的代码也没有错的,但是就是没有返回结果集,再试一下,,
Hs_Boy 2003-08-18
  • 打赏
  • 举报
回复
能不能说的详细一点,
雪狼1234567 2003-08-18
  • 打赏
  • 举报
回复
public EmployeeCollection( SqlConnection cn )
{
if (cn.State != ConnectionState.Open)
cn.Open();
//Get a recordset
SqlCommand cmd = new SqlCommand("getAllEmployees", cn);
cmd.CommandType = CommandType.StoredProcedure;

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable table = new DataTable();

//Place the records into a DataTable object so
//we can enumerate the rows.
da.Fill(table);

foreach(DataRow dr in table.Rows)
{
this.InnerList.Add( new Employee( dr ) );
}
}
顾君彦 2003-08-18
  • 打赏
  • 举报
回复
点住存贮过程,向窗口上一拖即可.
再把那个SQLCOMMAND赋成SQLDataAdapter的selectcommand
jiezhi 2003-08-18
  • 打赏
  • 举报
回复
SqlDataReader sdr = SQLDataAdapter.SelectCommand.ExecuteReader();
遮句執行完畢后,sdr=null嗎?
wolve 2003-08-18
  • 打赏
  • 举报
回复
Dim spCommand As New SqlCommand()
spCommand.CommandText = "p2"
spCommand.CommandType = CommandType.StoredProcedure

spCommand.Parameters.Add(New SqlParameter("@p1", SqlDbType.Int, 20, "p1"))
spCommand.Parameters.Item("@p1").Value = p1
spCommand.Parameters.Add(New SqlParameter("@p2", SqlDbType.VarChar, 20, "p2"))
spCommand.Parameters.Item("@p2").Value = p2

'Execute with query records
Dim adapter As New SqlDataAdapter(spCommand)
Dim result As New DataSet()
Try
adapter.Fill(result)
Catch se As SqlException
'Add customize code
Finally
adapter.Dispose()
End Try

Return result
windsoft 2003-08-18
  • 打赏
  • 举报
回复
如果你是用select那樣返回結果
那麼你調用存儲過程就象調用一般的sql語句那樣調用即可

110,533

社区成员

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

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

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