你可以把上面的字符串放在一个XML文件或是CONFIG文件里面,用户登录时可以修改这个文件。然后每次程序都先从这个文件里READ的出连接字符串就行了呀
解决方案 »
- GridControl 页脚问题
- 合并两张表的结果问题
- 网站集群建设与管理平台
- 关于我编写的一个小型计算器。
- 一个验证密码的问题
- 为什么我调用OleDbDataReader.Close()和OleDbConnection.Close()的时候,程序就死了,不响应任何消息?
- WinForms窗体特效
- 请问谁有 用户权限功能模块(C#编写)的源代码
- 哪里有关于C#.NET的电子书下载,给个网址吧
- 管于点net环境升级成domain域控制器后出现的问题
- 数据恢复的方法
- [南京程序员俱乐部]Blog大交换:http://218.2.112.243:1050/BBS/ShowForum.aspx?ForumID=60
其中关键数据被加密。
/// <summary>
/// 数据库访问授权文件数据读写
/// </summary>
public class LoginCertificate
{
/// <summary>
/// 服务器名
/// </summary>
private string server = "";
/// <summary>
/// 数据库名
/// </summary>
private string database = "";
/// <summary>
/// 用户名
/// </summary>
private string user = "";
/// <summary>
/// 口令
/// </summary>
private string password = "";
/// <summary>
/// 服务器名
/// </summary>
public string Server
{
get
{
return JhEncrypt.Decrypt(server);
}
set
{
server = JhEncrypt.Encrypt(value);
}
}
/// <summary>
/// 数据库名
/// </summary>
public string Database
{
get
{
return JhEncrypt.Decrypt(database);
}
set
{
database = JhEncrypt.Encrypt(value);
}
}
/// <summary>
/// 用户名
/// </summary>
public string User
{
get
{
return JhEncrypt.Decrypt(user);
}
set
{
user = JhEncrypt.Encrypt(value);
}
}
/// <summary>
/// 口令
/// </summary>
public string Password
{
get
{
return JhEncrypt.Decrypt(password);
}
set
{
password = JhEncrypt.Encrypt(value);
}
}
/// <summary>
/// 无参数构造方法
/// </summary>
public LoginCertificate()
{
}
/// <summary>
/// 带参数构造方法
/// </summary>
/// <param name="file">授权文件</param>
public LoginCertificate(string file)
{
Load(file);
}
/// <summary>
/// 保存授权数据到文件
/// </summary>
/// <param name="file">文件名</param>
/// <returns>成功或失败标志</returns>
public bool Save(string file)
{
if (File.Exists(file))
{
if (DialogResult.No == MessageBox.Show("同名文件已经存在,是否覆盖?\n" + file,"覆盖确认",MessageBoxButtons.YesNo)) return false;
}
if (server == "")
{
MessageBox.Show("服务器名不能为空");
return false;
}
if (database == "")
{
MessageBox.Show("数据库名不能为空");
return false;
}
if (user == "")
{
MessageBox.Show("用户名不能为空");
return false;
}
if (password == "")
{
MessageBox.Show("密码不能为空");
return false;
} DataSet ds = new DataSet();
DataTable table = new DataTable("LoginCertificate");
DataColumnCollection columns = table.Columns;
columns.Add("server", typeof(System.String));
columns.Add("database", typeof(System.String));
columns.Add("user", typeof(System.String));
columns.Add("password", typeof(System.String));
ds.Tables.Add(table);
DataRow row = ds.Tables[0].NewRow();
row["server"] = server;
row["database"] = database;
row["user"] = user;
row["password"] = password;
ds.Tables[0].Rows.Add(row);
ds.WriteXml(file);
return true;
}
/// <summary>
/// 读入授权数据
/// </summary>
/// <param name="file">授权文件名</param>
/// <returns>true or false</returns>
public bool Load(string file)
{
DataSet ds = new DataSet();
ds.ReadXml(file);
if (ds.Tables[0].Rows.Count == 1)
{
if (ds.Tables[0].Columns.IndexOf("server") < 0) return false;
server = (string)ds.Tables[0].Rows[0]["server"];
if (ds.Tables[0].Columns.IndexOf("database") < 0) return false;
database = (string)ds.Tables[0].Rows[0]["database"];
if (ds.Tables[0].Columns.IndexOf("user") < 0) return false;
user = (string)ds.Tables[0].Rows[0]["user"];
if (ds.Tables[0].Columns.IndexOf("password") < 0) return false;
password = (string)ds.Tables[0].Rows[0]["password"];
return true;
}
return false;
}
/// <summary>
/// 产生连接字符串
/// </summary>
/// <returns>连接字符串</returns>
public override string ToString()
{
if (Server == "" || Database == "" || User == "" || Password == "") return "";
return "Data Source=" + Server + ";Initial Catalog=" + Database + ";User id=" + User + ";Password=" + Password + ";";
} }
======================================================
假设你有两个文本输入框:
txtUid和txtPwdpublic DataBase(string uid, string pwd) // 重载一个构造函数。
{
string strConn = "server=(local);database=ProjectPlan;uid=" + uid + ";pwd=" + pwd + ";";
Connection = new SqlConnection( strConn );}在new这个对象的时候,把文本框的内容验证之后传入。
<?xml version="1.0"?>
<boot>
<Config ServerName="dbserver" DataBaseName="hmerp" DataType="0" AccID="1" AccName="上海*****有限公司" KjYear="2005" UserID="1021" UserName="****" LogUser="33362832" LogPass="343435743350371436583826192218101866" />
</boot>其中的LogUsrer 和logPass是用程序加密后放进去的,系统登录时可以让用户输入服务器名称,登录用户名,登录密码等信息,第一次登录后自动加密保存到log.xml文件中,下次登录时自动连接,但登录密码要输入.
using System;namespace HmClass.Base
{
public class Config
{
public static string ServerName="";
public static string DataBaseName="";
public static int DataType=0;
public static long AccID=1;
public static string AccName="";
public static int KjYear=2004;
public static long UserID=1;
public static string UserName="";
public static string LogUser="";
public static string LogPass="";
}
}
//系统日志using System;
using System.Collections;
using System.IO;
using System.Xml;
using System.Windows.Forms;namespace HmClass.Base
{
public class Logo
{
private static string wjmc=Application.StartupPath.Trim()+"\\Log.xml"; #region 更新配置信息
public static void SetConfig()
{
XmlDocument doc = new System.Xml.XmlDocument( );
XmlNode node,node1;
XmlElement xe,xe1;
if(!File.Exists(wjmc))
{
node=doc.CreateNode(XmlNodeType.XmlDeclaration,"","");
doc.AppendChild (node);
xe1=doc.CreateElement("","boot","");
xe=doc.CreateElement("Config");
xe.SetAttribute("ServerName","dbserver");
xe.SetAttribute("DataBaseName","hmerp");
xe.SetAttribute("DataType","0");
xe.SetAttribute("AccID","0");
xe.SetAttribute("AccName","");
xe.SetAttribute("KjYear","0");
xe.SetAttribute("UserID","0");
xe.SetAttribute("UserName","");
xe.SetAttribute("LogUser","33362832");
xe.SetAttribute("LogPass","343435743350371436583826192218101866");
xe1.AppendChild(xe);
doc.AppendChild(xe1);
doc.Save(wjmc);
}
doc.Load(wjmc);
node=doc.SelectSingleNode("boot");
node1=node.SelectSingleNode("Config");
xe=(XmlElement)node1;
HmClass.Base.Config.AccID=Convert.ToInt64(xe.GetAttribute("AccID"));
HmClass.Base.Config.AccName=xe.GetAttribute("AccName");
HmClass.Base.Config.DataBaseName=xe.GetAttribute("DataBaseName");
HmClass.Base.Config.DataType=Convert.ToInt32(xe.GetAttribute("DataType"));
HmClass.Base.Config.KjYear=Convert.ToInt32(xe.GetAttribute("KjYear"));
HmClass.Base.Config.LogPass=UnZipPassword(xe.GetAttribute("LogPass").Trim());
HmClass.Base.Config.LogUser=UnZipPassword(xe.GetAttribute("LogUser").Trim());
HmClass.Base.Config.ServerName=xe.GetAttribute("ServerName");
HmClass.Base.Config.UserID=Convert.ToInt64(xe.GetAttribute("UserID"));
HmClass.Base.Config.UserName=xe.GetAttribute("UserName");
}
#endregion #region 保存当前连接的服务器信息
public static void SetConfigFile(string ServerName,int DataType,string LogUser,string LogPass)
{
XmlDocument doc = new System.Xml.XmlDocument( );
XmlNode node,node1;
XmlElement xe;
doc.Load(wjmc);
node=doc.SelectSingleNode("boot");
node1=node.SelectSingleNode("Config");
xe=(XmlElement)node1;
xe.SetAttribute("ServerName",ServerName);
xe.SetAttribute("DataType",DataType.ToString().Trim());
xe.SetAttribute("LogUser",ZipPassword(LogUser));
xe.SetAttribute("LogPass",ZipPassword(LogPass));
doc.Save(wjmc);
Config.ServerName=ServerName;
Config.DataType=DataType;
Config.LogUser=LogUser;
Config.LogPass=LogPass;
}
#endregion #region 保存当前操作的账套信息
public static void SetConfigFile(long AccID,string AccName,string DataBaseName)
{
XmlDocument doc = new System.Xml.XmlDocument( );
XmlNode node,node1;
XmlElement xe;
doc.Load(wjmc);
node=doc.SelectSingleNode("boot");
node1=node.SelectSingleNode("Config");
xe=(XmlElement)node1;
xe.SetAttribute("AccID",AccID.ToString().Trim());
xe.SetAttribute("AccName",AccName);
xe.SetAttribute("DataBaseName",DataBaseName);
doc.Save(wjmc);
Config.AccID=AccID;
Config.AccName=AccName;
Config.DataBaseName=DataBaseName;
}
#endregion #region 保存当前操作的用户信息
public static void SetConfigFile(int KjYear,long UserID,string UserName)
{
XmlDocument doc = new System.Xml.XmlDocument( );
XmlNode node,node1;
XmlElement xe;
doc.Load(wjmc);
node=doc.SelectSingleNode("boot");
node1=node.SelectSingleNode("Config");
xe=(XmlElement)node1;
xe.SetAttribute("KjYear",KjYear.ToString().Trim());
xe.SetAttribute("UserID",UserID.ToString().Trim());
xe.SetAttribute("UserName",UserName);
doc.Save(wjmc);
Config.KjYear=KjYear;
Config.UserID=UserID;
Config.UserName=UserName;
}
#endregion #region 读取Master连接信息
public static string GetConnection1()
{
return "server="+Config.ServerName.Trim()+";uid="+Config.LogUser.Trim()+
";pwd="+Config.LogPass.Trim()+";database=master";
}
#endregion #region 读取常规连接信息
public static string GetConnection()
{
return "server="+Config.ServerName.Trim()+";uid="+Config.LogUser.Trim()+";pwd="+
Config.LogPass.Trim()+";database="+Config.DataBaseName;
}
#endregion #region 加密密码
public static string ZipPassword(string password)
{
string pas="",s;
if(password!=null && password.Trim().Length>0)
{
这段是我的加密码方法,为安全起见,删除了
}
return pas;
}
#endregion #region 解压密码
public static string UnZipPassword(string password)
{
string pas="";
if(password!=null && password.Trim().Length>0)
{
这段是我解加密码方法,为安全起见,删除了
}
return pas;
}
#endregion }
}