我有一个公共字符串,我需要在整个程序中使用。
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分配值后运行。
我该如何解决这个问题,我不想使用静态
答案 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;
}