gpt4 book ai didi

c# - 一个 sql 连接的几个查询

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:53 25 4
gpt4 key购买 nike

private void button5_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Data Source=MAZI-PC\\PROJECTACC;Initial Catalog=programDB;Integrated Security=True");
SqlCommand cmd = new SqlCommand("select label_sh from label_text where label_form='2' and label_form_labelID='1'", conn);
conn.Open();
label1.Text = cmd.ExecuteReader().ToString();
conn.Close();

SqlConnection conn1 = new SqlConnection("Data Source=MAZI-PC\\PROJECTACC;Initial Catalog=programDB;Integrated Security=True");
SqlCommand cmd1 = new SqlCommand("select label_sh from label_text where label_form='2' and label_form_labelID='2'", conn1);
conn1.Open();
label2.Text = cmd1.ExecuteReader().ToString();
conn1.Close();

SqlConnection conn2 = new SqlConnection("Data Source=MAZI-PC\\PROJECTACC;Initial Catalog=programDB;Integrated Security=True");
SqlCommand cmd2 = new SqlCommand("select label_sh from label_text where label_form='2' and label_form_labelID='3'", conn2);
conn2.Open();
label3.Text = cmd2.ExecuteReader().ToString();
conn2.Close();
}

我从数据库中获取标签文本。但是在每次获取操作中,我都会打开一个连接以编写查询。这是我在 C# 中的第一个项目。如何在不打开很多连接的情况下编写一些查询?谁能帮帮我?

最佳答案

  1. 使用using-statement 确保即使在异常情况下也能关闭连接。当类实现 IDisposable 时,您应该始终使用它。
  2. Connection-Pooling当您调用 con.Open()con.Close() 时,您并不总是打开和关闭连接。实际上 Close 只是使连接可重用,否则它会被标记为“正在使用”。因此,最好尽快关闭连接。

您可以使用 DataAdapter 通过一个查询填充 DataTable。然后您将拥有所有三个记录并可以获取您需要的内容:

using (var conn = new SqlConnection("Data Source=MAZI-PC\\PROJECTACC;Initial Catalog=programDB;Integrated Security=True"))
{
var sql = "select label_sh from label_text where label_form_labelID IN('1','2','3') and label_form='2'";
using (var da = new SqlDataAdapter(sql, conn))
{
da.Fill(table); // you don't need to open a connection when using a DataAdapter
}
}

label1.Text = table.AsEnumerable()
.Single(r => r.Field<int>("label_form_labelID") == 1)
.Field<String>("label_sh");
label2.Text = table.AsEnumerable()
.Single(r => r.Field<int>("label_form_labelID") == 2)
.Field<String>("label_sh");
label3.Text = table.AsEnumerable()
.Single(r => r.Field<int>("label_form_labelID") == 3)
.Field<String>("label_sh");

请注意,您需要为 Linq-To-DataTable 添加 using System.Linq;

关于c# - 一个 sql 连接的几个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com