你可以把上面的字符串放在一个XML文件或是CONFIG文件里面,用户登录时可以修改这个文件。然后每次程序都先从这个文件里READ的出连接字符串就行了呀

解决方案 »

  1.   

    Connection = new SqlConnection(textbox1.Text)
      

  2.   

    用XML存取的类:
    其中关键数据被加密。
    /// <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 + ";";
    } }
      

  3.   

    Connection = new SqlConnection( "server=(local);database=ProjectPlan;uid=sa;pwd=etgate;" );
    ======================================================
    假设你有两个文本输入框:
    txtUid和txtPwdpublic DataBase(string uid, string pwd)            // 重载一个构造函数。
    {
        string strConn = "server=(local);database=ProjectPlan;uid=" + uid + ";pwd=" + pwd + ";";
         Connection = new SqlConnection( strConn );}在new这个对象的时候,把文本框的内容验证之后传入。
      

  4.   

    谁能看看我的程序。。帮忙改一下请留下MSN谢谢
      

  5.   

    建立一个log.xml,内容如下:
    <?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文件中,下次登录时自动连接,但登录密码要输入.
      

  6.   

    建立一个类Config.cs
    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="";
    }
    }
      

  7.   

    再建立一个操作Config.cs和log.xml的类Logo.cs
    //系统日志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 }
    }