使用参数函数c#添加错误

时间:2016-07-21 10:24:32

标签: c# sql-server

其他信息

参数化查询' (@challan_no int,@job_name nvarchar(4000),@paper_stock_name nvar'需要未提供的参数@job_name。它继续显示这一点我不知道我使用堆栈溢出引用的代码是什么错误只是为了编码。

 cnn.Open();
            SqlCommand cmd3 = new SqlCommand("INSERT INTO challan_print_sub (challan_no,job_name,paper_stock_name,size,quantity,rate,amount,sno,book_no) VALUES(@challan_no,@job_name,@paper_stock_name,@size,@quantity,@rate,@amount,@sno,@book_no)");
            cmd3.Connection = cnn;
            cmd3.Parameters.Add("@challan_no", SqlDbType.Int);
            cmd3.Parameters.Add("@job_name", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@paper_stock_name", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@size", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@quantity", SqlDbType.Int);
            cmd3.Parameters.Add("@rate", SqlDbType.Int);
            cmd3.Parameters.Add("@amount", SqlDbType.Int);
            cmd3.Parameters.Add("@sno", SqlDbType.Int);
            cmd3.Parameters.Add("@book_no", SqlDbType.Int);
            for (j = 0; j <= i; j++)
            {
            cmd3.Parameters["@challan_no"].Value = Convert.ToInt32(textBox2.Text);
            cmd3.Parameters["@job_name"].Value = Convert.ToString(job_name[j]);
            cmd3.Parameters["@paper_stock_name"].Value = Convert.ToString(pap_sto_name[j]);
            cmd3.Parameters["@size"].Value = Convert.ToString(size[j]);
            cmd3.Parameters["@quantity"].Value = Convert.ToInt32(quantity[j]);
            cmd3.Parameters["@rate"].Value = Convert.ToInt32(rate[j]);
            cmd3.Parameters["@amount"].Value = Convert.ToInt32(amount[j]);
            cmd3.Parameters["@sno"].Value = Convert.ToInt32(snu[j]);
            cmd3.Parameters["@book_no"].Value = Convert.ToInt32(textBox1.Text);
            cmd3.ExecuteNonQuery();}                }

2 个答案:

答案 0 :(得分:0)

您正在使用AddWithValue但是您传递的是类型,而不是值。您需要使用.Add。由于除了使用@job_name的{​​{1}}之外,您正在使用它,因此SQL假定您传递除此之外的所有参数的值。请注意,对于NULL参数,您需要使用.Add解决此问题:

DBNull.Value

答案 1 :(得分:0)

试试这个:

cnn.Open();
            SqlCommand cmd3 = new SqlCommand("INSERT INTO challan_print_sub (challan_no,job_name,paper_stock_name,size,quantity,rate,amount,sno,book_no) VALUES(@challan_no,@job_name,@paper_stock_name,@size,@quantity,@rate,@amount,@sno,@book_no)");
            cmd3.Connection = cnn;
            cmd3.Parameters.Add("@challan_no", SqlDbType.Int);
            cmd3.Parameters.Add("@job_name", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@paper_stock_name", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@size", SqlDbType.NVarChar);
            cmd3.Parameters.Add("@quantity", SqlDbType.Int);
            cmd3.Parameters.Add("@rate", SqlDbType.Int);
            cmd3.Parameters.Add("@amount", SqlDbType.Int);
            cmd3.Parameters.Add("@sno", SqlDbType.Int);
            cmd3.Parameters.Add("@book_no", SqlDbType.Int);
            for (j = 0; j <= i; j++)
            {
            cmd3.Parameters["@challan_no"].Value = Convert.ToInt32(textBox2.Text);
            cmd3.Parameters["@job_name"].Value =job_name[j];
            cmd3.Parameters["@paper_stock_name"].Value = Convert.ToString(pap_sto_name[j]);
            cmd3.Parameters["@size"].Value = Convert.ToString(size[j]);
            cmd3.Parameters["@quantity"].Value = Convert.ToInt32(quantity[j]);
            cmd3.Parameters["@rate"].Value = Convert.ToInt32(rate[j]);
            cmd3.Parameters["@amount"].Value = Convert.ToInt32(amount[j]);
            cmd3.Parameters["@sno"].Value = Convert.ToInt32(snu[j]);
            cmd3.ExecuteNonQuery();
            }