在C#中执行查询更新

时间:2020-09-14 03:51:48

标签: c# sql-server .net-4.0

我有一个查询(WithUpdate),我想在单击“刷新”时执行它,如果需要创建一个新的类Updateprice()并调用它,则无返回值只需在Main()中编写一个方法。在Main()中创建了一个ExecuteNonQuery(),但是无法在其中推送SQL更新,因此在新类中创建了另一个连接字符串。单击刷新或保存按钮后如何运行该SQL命令。

public bool ExecuteNonQuery(string sql)
{
    try
    {
        using (SqlConnection conn = new SqlConnection(connInter))
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Dispose();
                return true;
            }
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
        return false;
    }
}

这是我尝试的内容:

public class Updateprice
{
    public string connInter = ConfigurationManager.ConnectionStrings["StringConn"].ConnectionString;
    public Updateprice()
    {
        try
        {
            using (SqlConnection conn = new SqlConnection(connInter))
            {
                SqlConnection connect = new SqlConnection(connInter);
                string query = @" WITH Sales_CTE (PR_KEY, TOTAL_PRICE)
                             AS
                             (
                            SELECT
                                Sale.PR_KEY,
                                SUM(PRICE * AMOUNT) AS TOTAL_PRICE
                            FROM
                                Sale_Detail
                            INNER JOIN Sale
                                ON Sale_Detail.FR_KEY = Sale.PR_KEY
                            GROUP BY
                                Sale.PR_KEY, TRAN_ID, TRAN_NO, TRAN_DATE, CUSTOMER_ID, USER_ID, TABLE_ID, PAY_TYPE_ID
                            )
                            UPDATE
                                Sale
                            SET
                                Sale.TOTAL_PRICE = Sales_CTE.TOTAL_PRICE
                            FROM
                                Sale
                            INNER JOIN
                                Sales_CTE
                            ON
                                Sales_CTE.PR_KEY = Sale.PR_KEY;";

                using (SqlCommand command = new SqlCommand(query, connect))
                {
                    command.Connection.Open();
                    command.ExecuteNonQuery();
                    command.Dispose();
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }
}

这是我的待售清单,我想在其中显示我的总价格,我成功显示了一个包含该列总价格的表格,如果我在这里叫updateprice() >

public partial class FrmSale_Listing : FrmDataList
{
    public FrmSale_Listing(NHMain nhmain)
        : base(nhmain, "SALE_VIEW")
    {
        InitializeComponent();            
    }
   
    public override void EditRecord()
    {
        try
        {
            FrmSale f = new FrmSale(NHMain, this.DataSet, "SALE", "SALE_DETAIL", double.Parse(this.GetDataRow()["FR_KEY"].ToString().Replace(",0000", "")))
            {
                isNew = false
            };
            f.ShowDialog();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    public override void NewRecord()
    {
        FrmSale f = new FrmSale(NHMain, this.DataSet, "SALE", "SALE_DETAIL", true);
        f.isNew = true;
        f.ShowDialog();
    }
}

我的问题是

如何正确执行上述查询,这是我的代码正确,是我需要再次创建SqlConnection还是只是创建我的SQL命令的字符串并将其推送到public bool ExecuteNonQuery(string sql),任何人都可以显示我有一个类似于我的问题的示例代码吗?

0 个答案:

没有答案