簡體   English   中英

帶參數添加功能c#時出錯

[英]error with the add with parameter function c#

附加信息

參數化查詢' (@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();}                }

您正在使用AddWithValue但是要傳遞類型而不是值。 您需要使用.Add 由於使用的是@job_name ,而您使用的是.Add ,因此SQL假設您正在傳遞除此參數外的所有參數的值。 請注意,對於NULL參數,您需要使用DBNull.Value來解決此問題:

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++)
{
    object jobName = job_name[j];
    if (jobName == null)
        jobName = DBNull.Value;


    cmd3.Parameters["@challan_no"].Value = Convert.ToInt32(textBox2.Text);
    cmd3.Parameters["@job_name"].Value = jobName;
    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 = 0; // Change this to some input
    cmd3.ExecuteNonQuery();
}

嘗試這個:

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();
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM