Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# for循环只运行了两次_C#_Sql Server - Fatal编程技术网

C# for循环只运行了两次

C# for循环只运行了两次,c#,sql-server,C#,Sql Server,经过12个小时的搜索,我无法解决我的问题 在SQL中,我创建了两个过程,一个用于插入,第二个用于检查数据库,如果项目已经存在,它将在项目日志中更新并插入 try { SqlConnection con = new SqlConnection(str); con.Open(); for (int i = 0; i < dgv.Rows.Count; i++) { SqlCommand cmd = new SqlCommand("Select

经过12个小时的搜索,我无法解决我的问题

在SQL中,我创建了两个过程,一个用于插入,第二个用于检查数据库,如果项目已经存在,它将在项目日志中更新并插入

try
{
    SqlConnection con = new SqlConnection(str);
    con.Open();

    for (int i = 0; i < dgv.Rows.Count; i++)
    {
        SqlCommand cmd = new SqlCommand("Select * From Purchase_Order WHERE Item_Name = '" + dgv.Rows[i].Cells["Column2"].Value + "' and Seller_Name = '" + dgv.Rows[i].Cells["Column3"].Value + "' and Company_Name = '" + dgv.Rows[i].Cells["Column4"].Value + "' ", con);
        SqlDataAdapter ds = new SqlDataAdapter(cmd);
        DataSet da = new DataSet();
        ds.Fill(da);
        int j = da.Tables[0].Rows.Count;
        if (j > 0)
        {
            update(dgv, Date_of_Purchase, Discount, Paid_Amount, lbl_Remaining, lbl_Subtotal, lbl_Total);
        }
        else
        {
            SqlCommand sc = new SqlCommand("Purchase_Order_History", con);
            sc.CommandType = CommandType.StoredProcedure;
            sc.Parameters.AddWithValue("@Invoice_no", dgv.Rows[i].Cells["Column1"].Value);
            sc.Parameters.AddWithValue("@Date_of_Purchase", Date_of_Purchase.Value.ToString("yyyy/MM/dd"));
            sc.Parameters.AddWithValue("@Item_Name", dgv.Rows[i].Cells["Column2"].Value);
            sc.Parameters.AddWithValue("@Seller_Name", dgv.Rows[i].Cells["Column3"].Value);
            sc.Parameters.AddWithValue("@Company_Name", dgv.Rows[i].Cells["Column4"].Value);
            sc.Parameters.AddWithValue("@Quantity", dgv.Rows[i].Cells["Column5"].Value);
            sc.Parameters.AddWithValue("@Unit_Price", dgv.Rows[i].Cells["Column6"].Value);
            sc.Parameters.AddWithValue("@Total_Price", dgv.Rows[i].Cells["Column7"].Value);
            sc.Parameters.AddWithValue("@Discount", Discount.Text);
            sc.Parameters.AddWithValue("@Paid_Amount", Paid_Amount.Text);
            sc.Parameters.AddWithValue("@Remaining", lbl_Remaining.Text);
            sc.Parameters.AddWithValue("@Sub_Total", lbl_Subtotal.Text);
            sc.Parameters.AddWithValue("@Total", lbl_Total.Text);

            sc.ExecuteNonQuery();
        }
    }

    SuccessBox sb = new SuccessBox();
    sb.ShowDialog();
    con.Close();
}
catch (Exception)
{
    throw;
}
第二程序:

ALTER PROCEDURE [dbo].[Update_Insert]
(
@Invoice_no int,
@Date_of_Purchase date,
@Item_Name nvarchar(100),
@Seller_Name nvarchar(100),
@Company_Name nvarchar(100),
@Quantity int,
@Unit_Price int,
@Total_Price int,
@Discount int,
@Paid_Amount int,
@Remaining int,
@Sub_Total int,
@Total int
)

AS
BEGIN

INSERT INTO Purchase_Order_Log(Invoice_no, Date_of_Purchase, Item_Name, 
Seller_Name, Company_Name, Quantity, Unit_Price, Total_Price, Discount, 
Paid_Amount, Remaining, Sub_Total, Total) 
VALUES(@Invoice_no, @Date_of_Purchase,@Item_Name, @Seller_Name, 
@Company_Name, @Quantity,@Unit_Price, @Total_Price, @Discount, @Paid_Amount, 
@Remaining, @Sub_Total, @Total);

UPDATE Purchase_Order SET Quantity = Quantity + @Quantity, Unit_Price = 
@Unit_Price, Total_Price = Total_Price + @Total_Price Where Item_Name = 
@Item_Name AND Company_Name = @Company_Name AND Seller_Name = @Seller_Name

UPDATE Items SET Available_Stock = Available_Stock + @Quantity, Unit_Price = 
@Unit_Price, Total_Price = Total_Price + @Total_Price Where Item_Name = 
@Item_Name AND Company_Name = @Company_Name AND Seller_Name = @Seller_Name

END

从更新for循环中删除-1后,我将命令添加到for循环中,但它会将新项打印两次???

而不是用户可以使用的两个存储过程

IF NOT EXISTS (SELECT 1 FROM table_Name WHERE condition) 
BEGIN 
INSERT INTO table_Name (id,name) 
VALUES 
(@id, @name)
END
ELSE 
UPDATE table_Name SET id = @id, name = @name 
WHERE condition

我之所以使用这个示例结构,是因为您的查询非常长。将示例查询转换为您的查询并尝试执行它将有助于您

而不是您可以使用的两个存储过程

IF NOT EXISTS (SELECT 1 FROM table_Name WHERE condition) 
BEGIN 
INSERT INTO table_Name (id,name) 
VALUES 
(@id, @name)
END
ELSE 
UPDATE table_Name SET id = @id, name = @name 
WHERE condition

我之所以使用这个示例结构,是因为您的查询非常长。将示例查询转换为您的查询并尝试执行它将对您有所帮助

首先,不要编写只会重新引发异常的catch块。第二,异常消息是什么?存储过程中有什么?Insert_Update参数太多。请清除参数,或者干脆不要重用命令-将命令的创建放在for循环中,就像在第一段代码中一样。事实上,您的try-catch在您显示的代码中是无用的……是
i++在for循环的末尾?for循环已经在增加
i
。首先,不要编写除了重新引发异常之外什么都不做的catch块。第二,异常消息是什么?存储过程中有什么?Insert_Update参数太多。请清除参数,或者干脆不要重用命令-将命令的创建放在for循环中,就像在第一段代码中一样。事实上,您的try-catch在您显示的代码中是无用的……是
i++在for循环的末尾?for循环已在增加
i
。如果我的答案正确,请接受。因此,如果其他人有相同的问题,则他们可以直接使用它。如果我的答案是正确的,那么请接受。如果其他人有同样的问题,那么他们可以使用它。或者如果你错了,那么你可以发布答案是的,你的答案是正确的,兄弟。
IF NOT EXISTS (SELECT 1 FROM table_Name WHERE condition) 
BEGIN 
INSERT INTO table_Name (id,name) 
VALUES 
(@id, @name)
END
ELSE 
UPDATE table_Name SET id = @id, name = @name 
WHERE condition