在一个表单中声明SqlConnection

时间:2015-04-10 10:07:22

标签: c# sql-server visual-studio visual-studio-2013

我正在寻找关于C#的一些建议 - 请记住,我只是C#&的初学者。 SQL语句。

我希望设计一个小程序,它将添加/编辑/删除并运行所有链接到Sql数据库的报告。

我希望在同一表单的不同区域中包含多个函数和Sql查询。

实施例: 1.我希望有一个搜索的组合框(从dbo.table中选择*) 2.我有一个按钮,当点击时显示来自另一个dbo.table的所有信息。

我的问题是:

我是否必须多次声明我的Sqlconnection,或者可以在my:

中声明
public partial class MainMenu : Form
{
    SqlConnection mmConnection = new SqlConnection("#");
    SqlCommand mmCommand = new SqlCommand();
    SqlDataReader reader;
}

然后我可以使用:

mmConnection.Open();
mmConnection.Close();

任何建议都会很棒。如果我可以在我的表单顶部声明它将保持我的代码更清洁。

最基本的问候, 扎克哈格里夫斯。

4 个答案:

答案 0 :(得分:3)

在web.config文件中添加连接字符串

<connectionStrings>
  <add name="CustomerDataConnectionString" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"
    providerName="System.Data.SqlClient" />
</connectionStrings>

以aspx格式

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connection string"].ToString());

有关详细信息,请使用此link

答案 1 :(得分:1)

最好使用单个连接字符串,在web.config文件中声明你的连接并在aspx.cs中调用它

答案 2 :(得分:0)

当然,您不需要拥有多个SqlConnection实例。对于大多数应用,一个连接就足够了。另一方面,sqlCommand是另一回事:如果重用它可能会遇到麻烦,但这更像是一个设计问题,而不是技术问题。

我建议您将所有数据库访问代码移动到另一个类(“DataProvider”/“DatabaseController”或您认为足够的任何名称)以正确封装代码部分。表单不需要直接处理SqlConnection或sqlCommand对象,让它通过该控制器类型的公共方法间接发生:

public class DataController
{
    private SQLConnection Connection {get; set;
    public void DataTable LoadDataFromDatabase()
    {
        ...
    }
    ...
 }

答案 3 :(得分:0)

考虑将您的SqlConnection声明为主表单的字段(如果您不想在任何其他表单上使用它)。

注意:添加对System.Configuration程序集的引用以使用ConfigurationManager类。

示例:

public partial class MainMenu : Form
{
    SqlConnection _myConnection;

    public Form1()
    {
        InitializeComponent();

        this._myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);
    }

    public void ExecuteAQueryExample()
    {
        if (this._myConnection.State != ConnectionState.Open) this._myConnection.Open();

        using (var command = this._myConnection.CreateCommand())
        {
            // ...
        }

        this._myConnection.Close();
    }
}