缺少一个参数。 [参数序数=8]

Posted

技术标签:

【中文标题】缺少一个参数。 [参数序数=8]【英文标题】:A Parameter is missing. [Parameter ordinal =8] 【发布时间】:2021-08-05 22:27:51 【问题描述】:
Query = "update Product set ProductName=@ProductName,Specification=@Specification" +
",DepartmentId=@DepartmentId,UnitId=@UnitId,TCategoryId=@TCategoryId,HSNId=@HSNId,SGroupId=@SGroupId" + " where ProductCode=@ProductCode";

using (SqlCeConnection con = new SqlCeConnection(strConnection))

                    

                        using (SqlCeCommand cmd = new SqlCeCommand(Query, con))

                        
                            cmd.Parameters.Clear();

                            cmd.Parameters.AddWithValue("@ProductCode", dgvAdjustment.Rows[i].Cells[0].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@ProductName", dgvAdjustment.Rows[i].Cells[1].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@Specification", strSpecification);
                            
                            cmd.Parameters.AddWithValue("@DepartmentId", strDepartmentId);

                            cmd.Parameters.AddWithValue("@UnitId", strUnitId);
                            cmd.Parameters.AddWithValue("@TCategoryId", strTCategoryId);
                            cmd.Parameters.AddWithValue("@HSNId", strHSNId);
                            cmd.Parameters.AddWithValue("@SGroupId", strSGroupId);

                            con.Open();
                            cmd.ExecuteNonQuery();
                        
                    
                

【问题讨论】:

您需要传递DBNull.Value 而不是null,因此对于每个参数,您可以执行strSGroupId ?? (object) DBNull.Value 之类的操作。而你shouldn't use AddWIthValue anyway,明确指定你的参数类型和长度。另外cmd.Parameters.Clear(); 是不必要的,它是一个新的命令对象。 请添加正确的解释和代码 sn-ps 或您面临的错误。 @Charlieface 不起作用 @PrathameshMore 如上所述,先生 @Charlieface 先生,虽然它通过了错误,但它已成功更新 【参考方案1】:

Query = "更新产品集 ProductName=@ProductName,Specification=@Specification" + ",DepartmentId=@DepartmentId,UnitId=@UnitId,TCategoryId=@TCategoryId,HSNId=@HSNId,SGroupId=@SGroupId" + " 其中 ProductCode=@ProductCode"; if (Properties.Settings.Default.isCompact) 使用 (SqlCeConnection con = new SqlCeConnection(strConnection)) 使用 (SqlCeCommand cmd = new SqlCeCommand(Query, con)) cmd.Parameters.Clear();

                            cmd.Parameters.AddWithValue("@ProductCode", dgvAdjustment.Rows[i].Cells[0].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@ProductName", dgvAdjustment.Rows[i].Cells[1].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@Specification", strSpecification);

                            cmd.Parameters.AddWithValue("@DepartmentId", strDepartmentId);

                            cmd.Parameters.AddWithValue("@UnitId", strUnitId);
                            cmd.Parameters.AddWithValue("@TCategoryId", strTCategoryId);
                            cmd.Parameters.AddWithValue("@HSNId", strHSNId);
                            cmd.Parameters.AddWithValue("@SGroupId", strSGroupId);

                            con.Open();
                            cmd.ExecuteNonQuery();
                        
                    
                
                else
                
                    using (SqlConnection con = new SqlConnection(strConnection))
                    
                        using (SqlCommand cmd = new SqlCommand(Query, con))
                        
                            cmd.Parameters.Clear();
                            cmd.Parameters.AddWithValue("@ProductCode", dgvAdjustment.Rows[i].Cells[0].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@ProductName", dgvAdjustment.Rows[i].Cells[1].Value.ToString().ToUpper());
                            cmd.Parameters.AddWithValue("@Specification", strSpecification);

                            cmd.Parameters.AddWithValue("@UnitId", strUnitId);
                            cmd.Parameters.AddWithValue("@DepartmentId", strDepartmentId);
                            cmd.Parameters.AddWithValue("@TCategoryId", strTCategoryId);


                            cmd.Parameters.AddWithValue("@HSNId", strHSNId);
                            cmd.Parameters.AddWithValue("@SGroupId", strSGroupId);
                            con.Open();
                            cmd.ExecuteNonQuery();
                        
                    
                

               // DbUpdate(Query);

            
            MessageBox.Show("Successfully updated", "ESoft");
            loadItems();
            loadDataGrid();
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message);
        

我已经调用了 cmd.ExecuteNonQuery();另一次在 DbUpdate(Query) 中;

【讨论】:

所以我评论了 DbUpdate(Query);

以上是关于缺少一个参数。 [参数序数=8]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8:[路线:students.update]缺少必需的参数

缺少必需的参数(laravel 8.8.0)

缺少路由所需的参数(Laravel 8)

使用 Mac OS X 10.8.5 Xcode 5.0.2 配置错误:clang:错误:缺少“-V”的参数(预期 1 个值)clang:错误:没有输入文件

从另一个视图返回文本错误,缺少参数参数

Swift:缺少参数的参数