[高手求助].net 调用mysql 存储过程出现异常

Jasonchen82 2009-06-30 09:27:19
各位高手:有没有见过, 调用mysql 存储过程,出现以下异常?

*************************************************************************
Exception Message:

StartIndex 不能小于 0。
参数名: startIndex

*************************************************************************
Exception StackTrace:

在 System.Text.StringBuilder.Remove(Int32 startIndex, Int32 length)
在 MySql.Data.Common.SqlTokenizer.NextToken()
在 MySql.Data.MySqlClient.ISSchemaProvider.ParseProcedureBody(DataTable parametersTable, String body, DataRow row, String nameToRestrict)
在 MySql.Data.MySqlClient.ISSchemaProvider.GetParametersFromShowCreate(DataTable parametersTable, String[] restrictions, DataTable routines)
在 MySql.Data.MySqlClient.ISSchemaProvider.GetProcedureParameters(String[] restrictions, DataTable routines)
在 MySql.Data.MySqlClient.ProcedureCache.GetProcData(MySqlConnection connection, String spName)
在 MySql.Data.MySqlClient.ProcedureCache.AddNew(MySqlConnection connection, String spName)
在 MySql.Data.MySqlClient.ProcedureCache.GetProcedure(MySqlConnection conn, String spName)
在 MySql.Data.MySqlClient.StoredProcedure.GetParameters(String procName)
在 MySql.Data.MySqlClient.StoredProcedure.Resolve()
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
在 MySql.Data.MySqlClient.MySqlHelper.ExecuteDataset(MySqlConnection connection, CommandType commandType, String commandText, MySqlParameter[] commandParameters)
在 MySql.Data.MySqlClient.MySqlHelper.ExecuteDataset(String connectionString, CommandType commandType, String commandText, MySqlParameter[] commandParameters)
在 FFCS.UnifiedFramework.DataAccess.MySqlDataProvider.PlatformDAL.GetDataSetByPage(String connStr, Int32 pageSize, Int32 pageIndex, String dataTableCode, String dataKeyCode, Boolean descFlag, String searchCondition, Int32& recordCount)
...全文
504 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
V68V6 2009-07-02
  • 打赏
  • 举报
回复
查查数值截断操作
是不是下标出了问题或者那个字符参数压根就没取到

我想竟然你在WIN32下已经调通,那么多半是环境迁移的问题。这样的话就要重点查Linux系统和Win32系统部署时的差异,问题很可能出在W和L系统不兼容的差异上。

UP
jf
chenyu112 2009-07-02
  • 打赏
  • 举报
回复
存储过程问题
好好检测一下
wo594261 2009-06-30
  • 打赏
  • 举报
回复
StartIndex 不能小于 0。

楼主好好检测下
Jasonchen82 2009-06-30
  • 打赏
  • 举报
回复
在客户端运行存储过程,能正常取到数据的,原来mysql 在win32 环境调用正常,部署到服务器是linux环境,就出现如上异常的。。

DataSet dstPage;
try
{
string sqlStr = GlobalConst.Platform.UF_DATABASE+".proc_CommonLib_GreatPaging";
MySqlParameter[] param = new MySqlParameter[7];
param[0] = new MySqlParameter("paramPageSize", pageSize);
param[1] = new MySqlParameter("paramCurrentPageIndex", pageIndex);
param[2] = new MySqlParameter("paramDataTableCode", dataTableCode);
param[3] = new MySqlParameter("paramDataKeyCode", dataKeyCode);
param[4] = new MySqlParameter("paramDESCFlag", descFlag);
param[5] = new MySqlParameter("paramSearchCondition", searchCondition);
param[6] = new MySqlParameter("paramRecordCount", SqlDbType.Int);
param[6].Direction = ParameterDirection.Output;

dstPage = MySqlHelper.ExecuteDataset(connStr, CommandType.StoredProcedure, sqlStr, param);
recordCount = FormatHelper.IntParse(param[6].Value);
}
catch (Exception objExp)
{
throw objExp;
}
  • 打赏
  • 举报
回复

应该是你的存储过程没获取到值

贴代码

62,074

社区成员

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

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

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

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