0

我想将我的连接字符串应用于整个 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();
    }

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

有没有办法绕过它?

4

2 回答 2

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 实例,并在每次需要连接时调用此方法。

编辑:

就个人而言,我将有一个方法来构建连接字符串,如上所述,并在需要时创建一个新的 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.
}
于 2013-05-19T15:05:35.030 回答
0

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

于 2013-05-19T15:18:54.703 回答