函数如下,求大虾帮忙看一下什么错误,谢谢了:
public DataSet GetProcessMasterIDByPartID(long partRevisionID)//注明partRevisionID=194;
{
OracleParameter[] parameters={
new OracleParameter("p_CURSOR",OracleType.Cursor,2000,ParameterDirection.Output,true,0,0,"",
DataRowVersion.Default,Convert.DBNull),
new OracleParameter("p_CPDH",OracleType.NVarChar,30)
}; parameters[1].Value = Convert.ToString(partRevisionID);
return(RunProcedure("GetProcessMasterIDByCPDH",parameters,"gongyixinxi"));
}protected DataSet RunProcedure(string storedProcName,IDataParameter[] parameters, string tableName)
{
DataSet dataSet = new DataSet();
if(Connection.State.ToString() == "Open")
Connection.Close();
Connection.Open();
OracleDataAdapter sqlDA = new OracleDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(storedProcName,parameters);
sqlDA.Fill(dataSet,tableName); Connection.Close();
return dataSet;
}private OracleCommand BuildQueryCommand(string storedProcName,IDataParameter[] parameters)
{
OracleCommand command = new OracleCommand(storedProcName, Connection);
command.CommandType = CommandType.StoredProcedure ; foreach(OracleParameter parameter in parameters)//出错
{
command.Parameters.Add(parameter); //出错
} return command;
}数据库里的字段都是nvarchar2,存储过程也是,程序包也建了,别的页面都可以显示,说明可以走得通;
报错信息:
System.InvalidCastException: 指定的转换无效。 at BITPDM.Data.DbObject_Oracle.BuildQueryCommand(String storedProcName, IDataParameter[] parameters) in E:\BITPDM\Modules\Core\DbObject_Oracle.cs:line 72 at BITPDM.Data.DbObject_Oracle.RunProcedure(String storedProcName, IDataParameter[] parameters, String tableName) in E:\BITPDM\Modules\Core\DbObject_Oracle.cs:line 124 at BITPDM.CAPPdb.Data.ProcessMasters.GetProcessMasterIDByPartID(Int64 partRevisionID) in e:\bitpdm\modules\bitpdm.cappdb\bitpdm.cappdb.data\processmasters.cs:line 400 at BITPDM.CAPPdb.Business.ProcessMaster.GetProcessMasterByPartID(Int64 partRevisionID) in E:\BITPDM\Modules\BITPDM.CAPPdb\CAPPdb.Business\ProcessMaster.cs:line 467 at BITPDM.Web.Modules.Mfg.ProcessTree.FillProcessMasterTree(TreeNode node, Int64 partRevisionID) in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 97 at BITPDM.Web.Modules.Mfg.ProcessTree.FillStructureTree() in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 92
at BITPDM.Web.Modules.Mfg.ProcessTree.Page_Load(Object sender, EventArgs e) in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 48 at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()
public DataSet GetProcessMasterIDByPartID(long partRevisionID)//注明partRevisionID=194;
{
OracleParameter[] parameters={
new OracleParameter("p_CURSOR",OracleType.Cursor,2000,ParameterDirection.Output,true,0,0,"",
DataRowVersion.Default,Convert.DBNull),
new OracleParameter("p_CPDH",OracleType.NVarChar,30)
}; parameters[1].Value = Convert.ToString(partRevisionID);
return(RunProcedure("GetProcessMasterIDByCPDH",parameters,"gongyixinxi"));
}protected DataSet RunProcedure(string storedProcName,IDataParameter[] parameters, string tableName)
{
DataSet dataSet = new DataSet();
if(Connection.State.ToString() == "Open")
Connection.Close();
Connection.Open();
OracleDataAdapter sqlDA = new OracleDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(storedProcName,parameters);
sqlDA.Fill(dataSet,tableName); Connection.Close();
return dataSet;
}private OracleCommand BuildQueryCommand(string storedProcName,IDataParameter[] parameters)
{
OracleCommand command = new OracleCommand(storedProcName, Connection);
command.CommandType = CommandType.StoredProcedure ; foreach(OracleParameter parameter in parameters)//出错
{
command.Parameters.Add(parameter); //出错
} return command;
}数据库里的字段都是nvarchar2,存储过程也是,程序包也建了,别的页面都可以显示,说明可以走得通;
报错信息:
System.InvalidCastException: 指定的转换无效。 at BITPDM.Data.DbObject_Oracle.BuildQueryCommand(String storedProcName, IDataParameter[] parameters) in E:\BITPDM\Modules\Core\DbObject_Oracle.cs:line 72 at BITPDM.Data.DbObject_Oracle.RunProcedure(String storedProcName, IDataParameter[] parameters, String tableName) in E:\BITPDM\Modules\Core\DbObject_Oracle.cs:line 124 at BITPDM.CAPPdb.Data.ProcessMasters.GetProcessMasterIDByPartID(Int64 partRevisionID) in e:\bitpdm\modules\bitpdm.cappdb\bitpdm.cappdb.data\processmasters.cs:line 400 at BITPDM.CAPPdb.Business.ProcessMaster.GetProcessMasterByPartID(Int64 partRevisionID) in E:\BITPDM\Modules\BITPDM.CAPPdb\CAPPdb.Business\ProcessMaster.cs:line 467 at BITPDM.Web.Modules.Mfg.ProcessTree.FillProcessMasterTree(TreeNode node, Int64 partRevisionID) in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 97 at BITPDM.Web.Modules.Mfg.ProcessTree.FillStructureTree() in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 92
at BITPDM.Web.Modules.Mfg.ProcessTree.Page_Load(Object sender, EventArgs e) in E:\BITPDM\BITPDM.Web\Modules\Mfg\ProcessTree.aspx.cs:line 48 at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()
解决方案 »
- 我的窗口传值代码:
- C# 用System.IO.Compression.DeflateStream压缩/解压字符串的问题。。
- 有谁用C#开发过类似QQ的在线聊天软件???
- c#可以调用VC的lib吗?能的话怎么调?
- 寻求从恢复盘中分离出XP的解决方案
- 关于codedom的问题
- 【如何把sqlserver中的image类型,access中的ole对象 与Excel进行导入导出】在线求助
- 关于LinkLabel控件的一个BUG????
- 请高手举例说明C#操作Master/Detail数据?高分酬谢。
- 在datagrid中如何使定位的行自动滚动到可见界面上?
- 转载一篇好文章!
- 子窗体类获取父窗体类的数据时的异常?
前面的参数进来,和后面的foreach不一致
转换无效
如果参数没有初始化值的话,也会产生转换无效的可能?那该怎么办?
new OracleParameter("p_CURSOR",OracleType.Cursor,2000,ParameterDirection.Output,true,0,0,"",
DataRowVersion.Default,Convert.DBNull),
new OracleParameter("p_CPDH",OracleType.NVarChar,30)
}; parameters[1].Value = Convert.ToString(partRevisionID);
return(RunProcedure("GetProcessMasterIDByCPDH",parameters,"gongyixinxi"));第一个参数是输出参数,初始值为DBNull,可是别的都可以转换,只有其中一个不可以转换,
怎么回事?
我从.net2002升级到2003,别的都可以显示页面,只有其中一个现实不了,怎么回事?