110,534
社区成员
发帖
与我相关
我的任务
分享
class Conn
{
private static string cn
{
get
{
return "Data Source=192.168.1.8,1433;Initial Catalog=Data2020;User ID=sa;pwd=" + pswd;
}
}
public static SqlConnection rs = new SqlConnection(cn);
public static string pswd;
}
class Conn
{
private static string cn
{
get
{
return "Data Source=192.168.1.8,1433;Initial Catalog=Data2020;User ID=sa;pwd=" + pswd;
}
}
public static SqlConnection rs = new SqlConnection(cn);
private static string pw;
public static string pswd
{
get
{
return pw;
}
set
{
pw = value;
rs = new SqlConnection(cn);
}
}
}
public static SqlConnection rs = new SqlConnection(cn);
你的这一段代码,由于是静态对象,所以在你form1的Load方法执行之前,他的对象就已经实例化完成了。所以实例化的时候pswd是空的,后续就算你再去修改pswd内容,你的rs对象也是不会有任何改变的。
这就像你去银行取钱,你对ATM说“把这张卡里所有的钱都取到我的钱包里!”由于你卡里没钱,然后你的钱包里一毛钱都没有。
然后你网银转账100块到银行卡内,这时候你银行卡确实有100块,但你的钱包仍然是空的,这里你的rs就是你钱包里的钱。
pswd就是你的银行卡。
所以要实现你的需求,你的逻辑应该是先存钱到银行卡内,然后再取钱,也就是你要先对pswd赋值,然后再实例化rs对象 public static class Conn
{
private static System.Data.SqlClient.SqlConnection sqlConn;
private static String password = "default password";
private static String mask = "Data Source=192.168.1.8,1433;Initial Catalog=Data2020;User ID=sa;pwd={0}";
public static System.Data.SqlClient.SqlConnection Sql(String pw = "")
{
if (pw != "" && pw != password)
{
password = pw;
sqlConn = null;
}
if (sqlConn == null)
{
string str = String.Format(mask, password);
sqlConn = new System.Data.SqlClient.SqlConnection(str);
}
return sqlConn;
}
}
使用时需要修改密码的时候
Conn.Sql("new password");
其他时候直接
Conn.Sql();
class Conn
{
public static SqlConnection rs;
public static void SetPwd(string pwd)
{
rs = new SqlConnection("Data Source=192.168.1.8,1433;Initial Catalog=Data2020;User ID=sa;pwd=" + pwd);
}
}