在方法c#

时间:2016-03-31 08:51:59

标签: c# string methods properties

我有一个公共字符串,我需要在整个程序中使用。

public string connectionString = null;

我将值分配如下:

internal string accessString()
{
    return connectionString =
        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
        @"Data Source=" + DBFileName + ";" +
        @"Persist Security Info=False";
}

当我第一次运行该方法时,值正确,但是一旦方法的执行完成,该值将返回null。

internal void selectDB()
    {
        try
        {
            OpenFileDialog choofdlog = new OpenFileDialog();
            choofdlog.Filter = "All Files (*.*)|*.*";
            choofdlog.FilterIndex = 1;
            if (choofdlog.ShowDialog() == DialogResult.OK)
            {
                DBFileName = choofdlog.FileName;
                connectionString = accessString();
                Saveproducts();
            }
            MessageBox.Show(connectionString);

        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }//select db ends

上述方法可以完美地获得该值。

internal void writeContents()// read all the text files to the Data base
    {
        try
        {
            MessageBox.Show(connectionString);
}
}

此方法返回null,即使它在第二个方法成功为connectionString分配值后运行。

我该如何解决这个问题,我不想使用静态

2 个答案:

答案 0 :(得分:2)

使用Session存储连接字符串,或者您可以使用

connectionString as Static variable

然后它不会重置该值。

答案 1 :(得分:0)

  

如何更改此设置,以便该方法始终创建此值   该计划

你可以这样做,accessString现在总是返回有效的连接字符串。

public string connectionString = null;
accessString();

internal string accessString()
{
    return string.IsNullOrEmpty(connectionString)? 
        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
        @"Data Source=" + DBFileName + ";" +
        @"Persist Security Info=False" : connectionString;
}