gpt4 book ai didi

c# - 在标签上打印来自 SQL Server 的搜索结果

转载 作者:行者123 更新时间:2023-11-30 21:52:46 24 4
gpt4 key购买 nike

我只是想在表格的标签上打印我的搜索总和。

故事是我有 2 个文本框,它们会给我 2 个日期并在我的数据库中搜索,并打印这 2 个日期之间总成本的答案。

我的代码是:

private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=SuperCalc;Integrated Security=True");

SqlCommand com = new SqlCommand();

if (con.State == ConnectionState.Closed)
{
con.Open();

com = new SqlCommand("select sum (Cost) as JameKol From TBL_Cost Where CostDate between '" + textBox1.Text + "' and '" + textBox2.Text + "' ", con);
label5.Text = com();

con.Close();
MessageBox.Show("Search is done", "Done");
}
}

com 不能用作方法,那么,我该怎么做呢?

最佳答案

只需使用 ExecuteScalar这正是这个的目的。它获取符合 SUM 函数的第一行的第一列。

label5.Text = com.ExecuteScalar().ToString();

但更重要的是,您应该始终使用 parameterized queries .这种字符串连接对于 SQL Injection 是开放的攻击。

并使用 using statement自动处理您的连接和命令,而不是手动调用 Close 方法。

顺便说一句,看起来您的 CostDate 列是字符类型的。不要这样做。 This is a bad habit to kick .您应该永远不要DateTime 值保留为一个字符。将其更改为 datetime 或更好的 datetime2 类型,并将您的 DateTime直接传递给您的参数化查询。这就是我使用 DateTime.Parse 来解析您的 Text 值的原因。如果它不能解析它们,您也可以使用 ParseExact

string conString = "Data Source=localhost;Initial Catalog=SuperCalc;Integrated Security=True";
using(var con = new SqlConnection(conString))
using(var com = con.CreateCommand())
{
com.CommandText = @"select sum (Cost) as JameKol From TBL_Cost
Where CostDate between @date1 and @date2";
com.Parameters.Add("@date1", SqlDbType.DateTime2).Value = DateTime.Parse(textBox1.Text);
com.Parameters.Add("@date2", SqlDbType.DateTime2).Value = DateTime.Parse(textBox2.Text);
con.Open();
label5.Text = com.ExecuteScalar().ToString();
}

关于c# - 在标签上打印来自 SQL Server 的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449387/

24 4 0
文章推荐: c# - 如何将 List 转换为 List