关于强类型数据集返回值的问题??? 我使用的是强类型数据集(就是后缀为xsd)作为访问层,做的方法是返回一个scalar标量,在.net中调用存储过程,定义整形变量得到过程返回值.我在存储过程里用return @@error返回,在查询分析器里面返回的都是正确的,但是在.net中得到的返回值都是null 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计是你执行存过的方法不对,试试下面的demo: /// <summary> /// 执行SQL命令 /// </summary> /// <param name="CommandText">命令文本,可以是SQL语句/存储过程/表名</param> /// <param name="Type">命令类型</param> /// <param name="Params">参数集(仅在执行存储过程时使用)</param> /// <returns>影响到的行数</returns> public int ExecuteCommand(string CommandText, CommandType Type, params object[] Params) { int iRows = 0; this.OpenConnection(); SqlCommand cmd = new SqlCommand(CommandText, this.m_DbConnection); cmd.CommandType = Type; if (Params != null && Type == CommandType.StoredProcedure) { SqlCommandBuilder.DeriveParameters(cmd); // 第一个参数为@Return,忽略 for (int i = 1; i < cmd.Parameters.Count; i++) cmd.Parameters[i].Value = Params[i - 1]; } iRows = cmd.ExecuteNonQuery(); if (Params != null && Type == CommandType.StoredProcedure) { // 回传参数值 for (int i = 1; i < cmd.Parameters.Count; i++) Params[i - 1] = cmd.Parameters[i].Value; } if (Type == CommandType.StoredProcedure) iRows = (int)cmd.Parameters[0].Value; return iRows; } 首先,谢谢您的回答。我再把问题仔细阐述一遍:我的存储过程是.net中创建的,应用了强类型数据集,利用TableAdapter数据集来作为数据层的,存储过程是增删改的,不管是成功或者失败,我都让他返回@@error,在逻辑层利用比如:int error=TableAdapter(对象).UpdateDate(参数...),检测error得值为null;存储过程返回的是标量的单个值。这究竟是怎么回事?请高手指教,谢谢!!! 如何把excel文件导入到数据库中 抽奖算法T_T,排除抽过的数字 如何将虚拟表中的字段插入到水晶报表中?? C#怎么引用自定义类 求助:上傳文檔時候,出現拒絕存取這信息..咋解決??? 在線等.... 如何监视某个进程是否在运行? 局域网通信的工具 在 C# 中通过 SQLite 查询时,同时使用 like 与 %% 与@Param0 不起任何作用 请问如何在Web的服务器端执行如下代码? 求一本介绍用C#实现Winform编程的实例书 C#实现数码管显示数据 请问哪里可以下载到《Microsoft C# Windows 程序设计》的示例代码?
/// <summary>
/// 执行SQL命令
/// </summary>
/// <param name="CommandText">命令文本,可以是SQL语句/存储过程/表名</param>
/// <param name="Type">命令类型</param>
/// <param name="Params">参数集(仅在执行存储过程时使用)</param>
/// <returns>影响到的行数</returns>
public int ExecuteCommand(string CommandText, CommandType Type, params object[] Params)
{
int iRows = 0;
this.OpenConnection();
SqlCommand cmd = new SqlCommand(CommandText, this.m_DbConnection);
cmd.CommandType = Type; if (Params != null && Type == CommandType.StoredProcedure)
{
SqlCommandBuilder.DeriveParameters(cmd);
// 第一个参数为@Return,忽略
for (int i = 1; i < cmd.Parameters.Count; i++)
cmd.Parameters[i].Value = Params[i - 1];
} iRows = cmd.ExecuteNonQuery(); if (Params != null && Type == CommandType.StoredProcedure)
{
// 回传参数值 for (int i = 1; i < cmd.Parameters.Count; i++)
Params[i - 1] = cmd.Parameters[i].Value;
} if (Type == CommandType.StoredProcedure)
iRows = (int)cmd.Parameters[0].Value; return iRows;
}