读书人

类里头的变量值不更新要重新启动程序

发布时间: 2013-11-05 14:40:42 作者: rapoo

类里面的变量值不更新,要重新启动程序才能更新变量值
各位大侠,请教一个问题,以下是问题描述:
在程序目录下有一个ini文件,用以存储数据库配置的参数。结构如下:


[DatabaseSetForF6]
serverForF6=
databaseForF6=
usernameForF6=
passwordForF6=

然后写了一个类,用以方便调用连接字符串,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace F6
{
class SQLForF6
{
static string Current = Directory.GetCurrentDirectory();
static INI ini = new INI(Current + "/database.ini");//读取ini文件
//从ini取数据库配置参数,并分别赋予变量
static string serverForF6 = ini.ReadValue("DatabaseSetForF6", "serverForF6");
static string databaseForF6 = ini.ReadValue("DatabaseSetForF6", "databaseForF6");
static string usernameForF6 = ini.ReadValue("DatabaseSetForF6","usernameForF6");
static string passwordForF6 = ini.ReadValue("DatabaseSetForF6", "passwordForF6");
//对取出的数据库配置参数进行解密
static string serverNotepad = Crypt.Decode(serverForF6);
static string databaseNotepad = Crypt.Decode(databaseForF6);
static string usernameNotepad = Crypt.Decode(usernameForF6);
static string passwordNotepad = Crypt.Decode(passwordForF6);
//解密后,形成连接字符串
public static string conStr = "server=" + serverNotepad + ";database=" + databaseNotepad + ";uid=" + usernameNotepad + ";pwd=" + passwordNotepad + ";Asynchronous Processing=True;";

}
}


现本人完成一winform,winform上含两个菜单,分别为“数据库配置”,“用户管理”,其中,用户管理有用到类里的conStr作为连接字符串。
如今,我通过一个指定的账户密码成功登录到这个winform(注:此登录过程没用到数据库users表的值,用的是指定的账户密码)。然后打开“数据库配置”,完成配置,此时,发现ini文件各个参数已经更新,接着我点击“用户管理”菜单打开用户管理窗口,此刻数据库连接失败,本人怀疑类里面的conStr连接字符串各个参数根本就没更新成功,依然取的是ini在配置以前的历史参数。最后,我必须退出系统,并重新登陆,然后点击“用户管理”才能成功读取到数据库里面的值,才能让类的conStr取到ini文件的最新参数。

不知这样描述各位是否可以看清楚,请帮忙分析是哪里出了问题,谢谢。
[解决办法]
遇见错误自己调试,别只在那“猜想”
[解决办法]
你可以添加一个功能“刷新配置”
在里面添加代码:
SqlForF6.ini = new INI(Current + "/database.ini");
SqlForF6.serverForF6 = ini.ReadValue("DatabaseSetForF6", "serverForF6");
...
SqlForF6.conStr = "server=" + serverNotepad + ";database=" + databaseNotepad + ";uid=" + usernameNotepad + ";pwd=" + passwordNotepad + ";Asynchronous Processing=True;";





[解决办法]
引用
如今,我通过一个指定的账户密码成功登录到这个winform(注:此登录过程没用到数据库users表的值,用的是指定的账户密码)。然后打开“数据库配置”,完成配置,此时,发现ini文件各个参数已经更新,接着我点击“用户管理”菜单打开用户管理窗口,此刻数据库连接失败,本人怀疑类里面的conStr连接字符串各个参数根本就没更新成功,依然取的是ini在配置以前的历史参数

估计是你在完成“数据库配置”后,只将配置更新到ini文件中,但是程序没有再次从ini文件中读取新的配置信息。

在更新ini文件后,追加读取ini文件的代码。
读取ini文件的代码可以参考苏小喵的。
[解决办法]
如果有更新完成的话,要再读取一次ini,因为之前的缓存起来了。
更像更新了.config文件一样,更新完后要ConfigurationManager.RefreshSection("connectionStrings");//强刷配置文件connectionStrings节点

读书人网 >C#

热点推荐