A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Li_升杰 中级黑马   /  2014-10-20 14:25  /  1496 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Li_升杰 于 2014-10-20 22:02 编辑

正在看.net的ADO.Net的项目视频,遇到这个问题!!!!

调用 Insert() 方法时在 ExecuteNonQuery() 方法中的 cmd.ExecuteNonQuery();   语句出错了。
错误代码:
变量名 '@Number' 已声明。变量名在查询批次或存储过程内部必须唯一。
必须声明标量变量 "@DivisionId"。

代码:
        public static object ExecuteNonQuery(string sql,params SqlParameter[] parameter)
        {            
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using(SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {                    
                    cmd.CommandText = sql;                    
                    cmd.Parameters.AddRange(parameter);                    
                    return cmd.ExecuteNonQuery();                    
                }
            }
        }


        public void Insert(Employee employee)
        {
            SqlHelper.ExecuteNonQuery(@"Insert into T_Employee(Id,Number,Name,BirthDay,InDate,MarriageId
                     ,PartyStatusId,Nationality,NativeAddr,EducationId,Major,School,Address,BaseSalary,Email
                     ,IdNum,TelNum,EmergencyContact,DivisionId,Position,ContractStartDay
                     ,ContractEndDay,Resume,Remarls,IsDeleted,GenderId) VALUES
           (newid(),@Number, @Name, @BirthDay, @InDate, @MarriageId, @PartyStatusId, @Nationality, @NativeAddr, @EducationId, @Major, @School
            , @Address, @BaseSalary, @Email, @IdNum,@TelNum, @EmergencyContact, @DivisionId, @Position, @ContractStartDay
           , @ContractEndDay, @Resume, @Remarls, 0,  @GenderId)",                  
                                                                       new SqlParameter("@Number",employee.Number),
                                                                       new SqlParameter("@Name",employee.Name),
                                                                       new SqlParameter("@BirthDay",employee.BirthDay),
                                                                       new SqlParameter("@InDate",employee.InDate),
                                                                       new SqlParameter("@MarriageId",employee.MarriageId),
                                                                       new SqlParameter("@PartyStatusId",employee.PartyStatusId),
                                                                       new SqlParameter("@Nationality",employee.Nationality),
                                                                       new SqlParameter("@NativeAddr",employee.NativeAddr),
                                                                       new SqlParameter("@EducationId",employee.EducationId),
                                                                       new SqlParameter("@Major",employee.Major),
                                                                       new SqlParameter("@School",employee.School),
                                                                       new SqlParameter("@Address",employee.Address),
                                                                       new SqlParameter("@BaseSalary",employee.BaseSalary),
                                                                       new SqlParameter("@Email",employee.Email),
                                                                       new SqlParameter("@IdNum",employee.IdNum),
                                                                       new SqlParameter("@TelNum",employee.TelNum),
                                                                       new SqlParameter("@EmergencyContact",employee.EmergencyContact),                                                          new SqlParameter("@Number",employee.Number),
                                                                       new SqlParameter("@DivisionId",employee.DivisionId),
                                                                       new SqlParameter("@Position",employee.Position),
                                                                       new SqlParameter("@ContractStartDay",employee.ContractStartDay),
                                                                       new SqlParameter("@ContractEndDay",employee.ContractEndDay),
                                                                       new SqlParameter("@Resume",employee.Resume),
                                                                       new SqlParameter("@Remarls",employee.Remarls),
                                                                       new SqlParameter("@GenderId",employee.GenderId));
        }



6 个回复

倒序浏览
菜鸟一枚 飘过飘过
回复 使用道具 举报
("@Number 你在SqlParameter中指定了两次。 "@DivisionId 这个我不知道你的值的类型是什么,你把这个值用 as  运算符转换成 object 应该就没有问题了:new SqlParameter("@DivisionId",employee.DivisionId as object)。

点评

非常感谢,冷静下来仔细一看发现真是这样,第一个问题解决了之后就没有问题了。不好意思眼神不好。  发表于 2014-10-20 22:02
回复 使用道具 举报
continue  发表于 2014-10-20 19:54
("@Number 你在SqlParameter中指定了两次。 "@DivisionId 这个我不知道你的值的类型是什么,你把这个值用 a ...

还是没有用呐亲!用过 cmd.Parameters.Clear() 也都没用,不知道哪里出错了,不明白为什么 @Number 会被指定了两次。:Q
回复 使用道具 举报
new SqlParameter("@Number",employee.Number),去掉一个
回复 使用道具 举报
u010209195 发表于 2014-10-28 15:08
new SqlParameter("@Number",employee.Number),去掉一个

非常感谢,已经解决了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马