将相同的sql连接字符串应用于整个winform?

时间:2013-05-19 14:54:42

标签: c#

我想将我的连接字符串应用于整个winform。如果我在这种情况下这样做 - 它将适用于整个胜利形式,但是我不能使用文本框输入细节:

public partial class Form1 : Form
{
    SqlConnection myConnection = new SqlConnection("user id=userName;" +
    "password=userPass;" +
    "server=.;" +
    "Trusted_Connection=yes;" +
    "database=dbName; " +
    "MultipleActiveResultSets=True;" +
    "connection timeout=30");

    public Form1()
    {
        InitializeComponent();
    }

如果我将使用文本框,我将需要输入每个方法的连接字符串。

无论如何都要绕过它?

2 个答案:

答案 0 :(得分:1)

您可以采取的另一种方法是在需要时创建SqlConnection,如果要保存引用,则存储在私有变量中。

所以当你需要连接时:

if( myConnection == null )
{
    string connectionString = string.Format( "user id={0}, password={1}", userIdTextBox.Text, passwordTextBox.Text );
  myConnection = new SqlConnection( connectionString );
}

您将扩展“string.Format”以包含其他连接属性。

如果在多个位置需要“myConnection”,则将上述代码放入名为“GetConnection”的方法中,让它使用文本框的内容返回SqlConnection实例,并在每次需要连接时调用此方法。 / p>

编辑:

就个人而言,我会有一个构建连接字符串的方法,如上所述,并在需要时创建一个新的SqlConnection实例。这将尝试每次都打开一个新连接,但会使用ADO.NET库中内置的连接池。

using( SqlConnection connection = new SqlConnection( this.GetConnectionString() ) )
{
    //  Open Connection
    //  Access the database
    //  Close the connection <- Manual closing MAY not be needed as it might be done in Dispose ...check MSDN for clarification.
}

答案 1 :(得分:0)

您可以创建一个静态类来存储连接字符串。始终创建连接字符串并不是一个好习惯。