【问题标题】:Execute SQL in multiple connections c#在多个连接中执行SQL c#
【发布时间】:2016-10-25 10:15:26
【问题描述】:

这是我拥有的代码,在组合框中选择一个连接字符串时效果很好

如何在多个连接中执行相同的 SQL 查询,而不是一键单击??

public string connstring = "";
        private void cmbSrv_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSrv.SelectedIndex == 0)
            {
                connstring = @"Data Source=tcp:10.1.0.100;Initial Catalog=Database1;User ID=user;Password=pass;MultipleActiveResultSets=true;";
            }
            else if (cmbSrv.SelectedIndex == 1)
            {
                connstring = @"Data Source=tcp:10.0.0.100;Initial Catalog=Database2 ;User ID=user;Password=pass;MultipleActiveResultSets=true;";

            }
        }
private void btnKonfirm_Click(object sender, EventArgs e)
    {
using (SqlConnection connection = new SqlConnection(connstring))

            {
                SqlCommand cmd1 = new SqlCommand();

                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }

                SqlCommand command1 =
                    new SqlCommand("DELETE FROM TABLE1 WHERE ID="+textbox1+"", connection);                    



                command1.ExecuteNonQuery();


                connection.Close();
            }
}

【问题讨论】:

  • 检查我的答案,如果有什么不清楚的地方告诉我。

标签: c# sql connection


【解决方案1】:

你的代码有一些问题,比如Sql Injection,你可以用参数化查询来解决。

您没有使用textbox1Text 属性。修复您的命名,不要使用 textbox1 作为控件名称。命名很重要,因此您可以被其他程序员理解。您的数据库表也是如此,Table1 不是合适的名称。

当您在 using 块中时,您不需要 Close() 连接。使用自动执行此操作。此外,当您创建 SqlConnection 对象时,您可以打开连接,无需进行 if 检查。

public void ConfirmBtn_Click(object sender, EventArgs e)
{
     string connString1 = "FirstConnectionSTring";
     string connString2 = "SecondConnectionSTring";

     ExecuteNonQuery(connString1);
     ExecuteNonQuery(connString2);
}

public void ExecuteNonQuery(string connString)
{
    using (SqlConnection connection = new SqlConnection(connString))
    {

         connection.Open();
         SqlCommand cmd =
                    new SqlCommand("DELETE FROM TABLE1 WHERE ID=@ID", connection);

         cmd.Parameters.AddWithValue("@ID", textbox1.Text);         

         cmd.ExecuteNonQuery();

    }
}

【讨论】:

  • @AlexK。如果你不处理 SqlCommand 你不会伤害自己,在类的当前实现中没有应该由终结器处理的资源。但是是的,始终 Dispose IDisposable 对象是一个好习惯。原因之一是未来的实施可能会发生变化。
  • @AlexK。同样经过研究,如果您在参考代码中检查 SqlCommand 的构造函数,您会看到他正在调用 GC.SuppressFinalize(this); Reference Code
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2016-08-28
  • 2022-06-29
  • 2013-04-08
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多