急!存储过程的结果放到DataSet中怎么不对?

wengyz 2006-07-23 10:09:21
代码如下:
dsCommand.SelectCommand = myOdbcConnection.CreateCommand()
dsCommand.SelectCommand.Parameters.Add(FOLDERID_PARM, OdbcType.Int)
dsCommand.SelectCommand.Parameters(FOLDERID_PARM).Value = FolderID
dsCommand.SelectCommand.CommandText = "fmLoadDoc ?"
dsCommand.SelectCommand.CommandType = CommandType.StoredProcedure
dsCommand.SelectCommand.ExecuteNonQuery()
Dim data As New FileData
'dsCommand.Fill(data)

Dim data As New DataSet
Dim commandAdp As New OdbcDataAdapter
commandAdp.SelectCommand = dsCommand.SelectCommand
Try
commandAdp.Fill(data)
Catch ex As Exception
Throw New ApplicationException(ex.ToString())
End Try
执行fill的时候很慢。执行后也没有报错,然后检查data为空
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
活靶子哥哥 2006-07-23
  • 打赏
  • 举报
回复
你在查询分析器内执行你的过程看有结果没
然后检查你的调用
你的过程名有 问号吗?
fanliang11 2006-07-23
  • 打赏
  • 举报
回复
看我写的代码模仿一下,你的代码好象写的不对
SqlConnection sc=this.getSqlConnection();
sc.Open();
SqlCommand sm=sc.CreateCommand();
//sm.Connection=sc;
sm.CommandText=procName;
sm.CommandType=CommandType.StoredProcedure;

foreach(SqlParameter s in sp)
{
sm.Parameters.Add(s);
}
SqlDataAdapter sda=new SqlDataAdapter();
sda.SelectCommand=sm;
DataSet ds=new DataSet();
sda.Fill(ds);
int i=ds.Tables[0].Rows.Count;
sc.Close();
return ds;
fanliang11 2006-07-23
  • 打赏
  • 举报
回复
一看就写错拉
boby168 2006-07-23
  • 打赏
  • 举报
回复
原因如下:
多执行了如下语句:
dsCommand.SelectCommand.ExecuteNonQuery()

ExecuteNonQuery需要OdbcConnection打开执行后,需要显式关闭OdbcConnection。
如myOdbcConnection.Close();


OdbcDataAdapter的Fill方法执行后会自动关闭。

试试如下代码:

dsCommand.SelectCommand = myOdbcConnection.CreateCommand()
dsCommand.SelectCommand.Parameters.Add(FOLDERID_PARM, OdbcType.Int)
dsCommand.SelectCommand.Parameters(FOLDERID_PARM).Value = FolderID
dsCommand.SelectCommand.CommandText = "fmLoadDoc ?"
dsCommand.SelectCommand.CommandType = CommandType.StoredProcedure

‘dsCommand.SelectCommand.ExecuteNonQuery()
‘Dim data As New FileData
’dsCommand.Fill(data)

Dim data As New DataSet
Dim commandAdp As New OdbcDataAdapter
commandAdp.SelectCommand = dsCommand.SelectCommand
Try
commandAdp.Fill(data)
Catch ex As Exception
Throw New ApplicationException(ex.ToString())
End Try

wengyz 2006-07-23
  • 打赏
  • 举报
回复
加?是sybase调用存储过程的写法。存储过程结果没错
impeller 2006-07-23
  • 打赏
  • 举报
回复
dsCommand.SelectCommand.CommandText = "fmLoadDoc ?"
怎么有个?

设个断点跟踪下FolderID的值,然后拿到查询分析器中执行,看看有没有错

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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