今天user提出,想在登陆系统时,选择测试资料库和正式资料库.
数据库连接字符串是存储在DBconn.XML 文件中的,原来的测试区,和正式区分别独立(两个独立的系统),所以在对数据库操作时,自己选择自己的XML文件并读取里面的连接字符串就好了.
如果要把他们放在一起,那么在登陆时,首先选择要操作的是测试资料库还是正式资料库.并对作出的选择作出标记,用于告诉连接资料库的类要对哪个XML文件进行操作.
连接资料库的类:
class Connstring
{
private int selectindex;
public int SelectIndex
{
get
{
return selectindex;
}
set
{
selectindex = value;
}
}
public void Connstring()
{
if (selectindex == 0)
{
//读出测试资料库连接字符串 Connstring
}
else
{
//读出正式资料库连接字符串 Connstring
}
}
//利用字符串Connstring 对数据库连接并操作。
}
在登陆时:
Connstring conn=new Connstring()
if(选择测试资料库)
{Conn.SelectIndex=0; }
else
{Conn.SelectIndex=1; }
这样做了以后,本以为没有问题了,测试后发现无论我选择哪个资料库,系统显示的数据永远都是测试区的数据!!
经过跟踪调试,发现:
在刚刚做完选择动作后,比方说选择正式区,此时类中selectindex字段按照预期显示为1;但当我要调用 类中其他的方法操作数据库时(当然要对类做new操作),selectindex字段,被初始化为0.......
得有一个办法,使得selectindex字段,在最初赋予数值后不能改变,直至系统退出
于是想到了用static关键字.静态字段是属于类的,不属于对象,故不能做实例化,一旦赋数值,此数值就存储内存中,以备调用,直至系统退出,才释放.
struct DBType
{
public static int selectindex;
}
class Connstring
{
public void Connstring()
{
if (DBType.selectindex == 0)
{
//读出测试资料库连接字符串 Connstring
}
else
{
//读出正式资料库连接字符串 Connstring
}
}
//利用字符串Connstring 对数据库连接并操作。
}
在登陆时:
if(选择测试资料库)
{DBType.selectindex =0; }
else
{DBType.selectindex =1; }
问题得到解决!