黑马程序员技术交流社区

标题: 运行时出错! [打印本页]

作者: Li_升杰    时间: 2014-10-20 14:25
标题: 运行时出错!
本帖最后由 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));
        }




作者: axing110    时间: 2014-10-20 14:55
菜鸟一枚 飘过飘过
作者: continue     时间: 2014-10-20 19:54
("@Number 你在SqlParameter中指定了两次。 "@DivisionId 这个我不知道你的值的类型是什么,你把这个值用 as  运算符转换成 object 应该就没有问题了:new SqlParameter("@DivisionId",employee.DivisionId as object)。
作者: Li_升杰    时间: 2014-10-20 20:46
continue  发表于 2014-10-20 19:54
("@Number 你在SqlParameter中指定了两次。 "@DivisionId 这个我不知道你的值的类型是什么,你把这个值用 a ...

还是没有用呐亲!用过 cmd.Parameters.Clear() 也都没用,不知道哪里出错了,不明白为什么 @Number 会被指定了两次。:Q
作者: u010209195    时间: 2014-10-28 15:08
new SqlParameter("@Number",employee.Number),去掉一个
作者: Li_升杰    时间: 2014-10-29 06:52
u010209195 发表于 2014-10-28 15:08
new SqlParameter("@Number",employee.Number),去掉一个

非常感谢,已经解决了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2