我有一个查询(With
和Update
),我想在单击“刷新”时执行它,如果需要创建一个新的类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)
,任何人都可以显示我有一个类似于我的问题的示例代码吗?