必须声明标量变量 "@IfConcel"

zyydj_10 2015-05-07 04:40:14
我找了半天,没有找到我没有声明的变量啊,只能求助了,断点也看不出来哪里有问题。
我的代码如下

StringBuilder strSql = new StringBuilder();
strSql.Append("insert into YyInfo(");
strSql.Append("IfConcel,SPID,CgDay,CgTime,PeopNum,UnitName,AddressID,YyName,YyPhoneNum,UserID");
strSql.Append(") values (");
strSql.Append("@IfConcel,@SPID,@CgDay,@CgTime,@PeopNum,@UnitName,@AddressID,@YyName,@YyPhoneNum,@UserID");
strSql.Append(") ");
strSql.Append(";");
//strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@IfConcel", SqlDbType.Int,4) ,
new SqlParameter("@SPID", SqlDbType.Int,4) ,
new SqlParameter("@CgDay", SqlDbType.DateTime) ,
new SqlParameter("@CgTime", SqlDbType.Char,20) ,
new SqlParameter("@PeopNum", SqlDbType.Int,4) ,
new SqlParameter("@UnitName", SqlDbType.Char,50) ,
new SqlParameter("@AddressID", SqlDbType.Int,4) ,
new SqlParameter("@YyName", SqlDbType.Char,50) ,
new SqlParameter("@YyPhoneNum", SqlDbType.Char,20) ,
new SqlParameter("@UserID", SqlDbType.Int,4)

};

parameters[0].Value = model.IfConcel;
parameters[1].Value = model.SPID;
parameters[2].Value = model.CgDay;
parameters[3].Value = model.CgTime;
parameters[4].Value = model.PeopNum;
parameters[5].Value = model.UnitName;
parameters[6].Value = model.AddressID;
parameters[7].Value = model.YyName;
parameters[8].Value = model.YyPhoneNum;
parameters[9].Value = model.UserID;

object obj = SQLHelper.GetSingle(strSql.ToString(), parameters);
if (obj == null)
{
return 0;
}
else
{

return Convert.ToInt32(obj);

}
...全文
230 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
结贴了,为啥没显示分数给谁了
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 17 楼 lovelj2012 的回复:
[quote=引用 16 楼 zyydj_10 的回复:] [quote=引用 15 楼 lovelj2012 的回复:] [quote=引用 12 楼 zyydj_10 的回复:] [quote=引用 11 楼 lovelj2012 的回复:] [quote=引用 8 楼 feiyun0112 的回复:] cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?! [/quote]报这个错误 Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。[/quote] 哥醉了。。。 你单步调试下,抛出这个异常的时候,哪行代码报错?[/quote]

 public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        cmd.Parameters.AddRange(cmdParms);//这里报错
                        int rows = cmd.ExecuteNonQuery();
[/quote] 哥是真醉了! 1、SqlCommand是引用类型,你在PrepareCommand方法已赋值,你还再AddRange一次干神马呢? 2、PrepareCommand执行完,cmd已经添加cmdParms了[/quote] 非常感谢你的帮助,我把这句话注释了,就好了,是我写的时候没有注意,调试的时候就忘记了。谢谢
江南小鱼 2015-05-07
  • 打赏
  • 举报
回复
引用 16 楼 zyydj_10 的回复:
[quote=引用 15 楼 lovelj2012 的回复:] [quote=引用 12 楼 zyydj_10 的回复:] [quote=引用 11 楼 lovelj2012 的回复:] [quote=引用 8 楼 feiyun0112 的回复:] cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?! [/quote]报这个错误 Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。[/quote] 哥醉了。。。 你单步调试下,抛出这个异常的时候,哪行代码报错?[/quote]

 public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        cmd.Parameters.AddRange(cmdParms);//这里报错
                        int rows = cmd.ExecuteNonQuery();
[/quote] 哥是真醉了! 1、SqlCommand是引用类型,你在PrepareCommand方法已赋值,你还再AddRange一次干神马呢? 2、PrepareCommand执行完,cmd已经添加cmdParms了
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 15 楼 lovelj2012 的回复:
[quote=引用 12 楼 zyydj_10 的回复:] [quote=引用 11 楼 lovelj2012 的回复:] [quote=引用 8 楼 feiyun0112 的回复:] cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?! [/quote]报这个错误 Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。[/quote] 哥醉了。。。 你单步调试下,抛出这个异常的时候,哪行代码报错?[/quote]

 public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        cmd.Parameters.AddRange(cmdParms);//这里报错
                        int rows = cmd.ExecuteNonQuery();
江南小鱼 2015-05-07
  • 打赏
  • 举报
回复
引用 12 楼 zyydj_10 的回复:
[quote=引用 11 楼 lovelj2012 的回复:] [quote=引用 8 楼 feiyun0112 的回复:] cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?! [/quote]报这个错误 Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。[/quote] 哥醉了。。。 你单步调试下,抛出这个异常的时候,哪行代码报错?
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
去掉cmd.Parameters.Clear();更新的时候报Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。 不去掉的时候新增报 必须声明标量变量 "@IfConcel"
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 10 楼 feiyun0112 的回复:
cmd.Parameters.Clear(); 你明不明白这句的作用?
明白是明白,但是去掉以后就报Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 11 楼 lovelj2012 的回复:
[quote=引用 8 楼 feiyun0112 的回复:] cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?! [/quote]报这个错误 Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。
江南小鱼 2015-05-07
  • 打赏
  • 举报
回复
引用 8 楼 feiyun0112 的回复:
cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
+1 你Add一次,Clear所有,介个,你不是偶尔报错吧?!
feiyun0112 2015-05-07
  • 打赏
  • 举报
回复
cmd.Parameters.Clear();
你明不明白这句的作用?
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 8 楼 feiyun0112 的回复:
cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); 我晕!!!!
把这个去了更新时候报错
feiyun0112 2015-05-07
  • 打赏
  • 举报
回复
cmd.Parameters.Add(parameter);
cmd.Parameters.Clear();

我晕!!!!
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 6 楼 lovelj2012 的回复:
[quote=引用 5 楼 zyydj_10 的回复:] 之前更新数据也报错,调了两下也没改啥,自己就好了
还是要找到原因,不然系统隐藏着不稳定的bug。 PrepareCommand方法的代码贴出来~[/quote]

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = cmdText;
            if (trans != null)
                cmd.Transaction = trans;
            cmd.CommandType = CommandType.Text;//cmdType;
            if (cmdParms != null)
            {

                //cmd.Parameters.Clear();
                foreach (SqlParameter parameter in cmdParms)
                {
                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                        (parameter.Value == null))
                    {
                        parameter.Value = DBNull.Value;
                    }
                    cmd.Parameters.Add(parameter);
                    cmd.Parameters.Clear();
                }
            }
江南小鱼 2015-05-07
  • 打赏
  • 举报
回复
引用 5 楼 zyydj_10 的回复:
之前更新数据也报错,调了两下也没改啥,自己就好了
还是要找到原因,不然系统隐藏着不稳定的bug。 PrepareCommand方法的代码贴出来~
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
之前更新数据也报错,调了两下也没改啥,自己就好了
zyydj_10 2015-05-07
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
看SQLHelper.GetSingle用了parameters没

public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        cmd.Parameters.Clear();
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        object obj = cmd.ExecuteScalar();
                        cmd.Parameters.Clear();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        throw e;
                    }
                }
            }
        }
  • 打赏
  • 举报
回复
GetSingle看名字也是取数据 你应该用ExecuteNonQuery对应的方法
江南小鱼 2015-05-07
  • 打赏
  • 举报
回复
这个要看你的GetSingle方法吧
feiyun0112 2015-05-07
  • 打赏
  • 举报
回复
看SQLHelper.GetSingle用了parameters没
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

111,132

社区成员

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

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

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