把數據庫連接字符串寫入註冊表

考慮到用戶可能更換SQL Server服務器,所以數據庫連接字符串不能寫成固定的。我們可以把它寫入一個文件,需要的時候訪問它即可以了。

下面的方法是把它寫入註冊表(寫入註冊表是爲了考慮到安全性,也可以寫入某個xml文件)

using Microsoft.Win32;

        private void SetRegistryKey(string name,string connstr)
        
{
            RegistryKey rk
=Registry.LocalMachine;
            RegistryKey srk
=rk.OpenSubKey("software",true);

            
if(srk.OpenSubKey("Sunsoft/SunWebExam")==null)
                srk.CreateSubKey(
"Sunsoft/SunWebExam");

            RegistryKey crk
=srk.OpenSubKey("Sunsoft/SunWebExam",true);
            crk.SetValue(name,connstr);

            rk.Close();
            srk.Close();
            crk.Close();
            
        }
 
        private void btnSave_Click(object sender, System.EventArgs e)
        
{
            
string connString="packet size=4096;data source=";
            
//string connString="provider=SQLOLEDB;packet size=4096;data source=";
            connString+=txtServer.Text.Trim()+";user id=";
            connString
+=txtUser.Text.Trim()+";pwd=";
            connString
+=txtPwd.Text.Trim()+";persist security info=False;initial catalog=SunWebExam";

            
//
            
//todo:寫入註冊表
            
//
            SetRegistryKey("Server",connString);
            
            
this.DialogResult=DialogResult.OK;
            
this.Close();
        }

 

        /// <summary>
        
/// 打開數據庫連接.
        
/// </summary>

        private void Open() 
        
{
            
// 打開數據庫連接
            if (con == null
            
{

                RegistryKey rk
=Registry.LocalMachine;
                RegistryKey subrk
=rk.OpenSubKey("software/Sunsoft/SunWebExam");
                
string connString=(string)subrk.GetValue("server");
                con 
= new SqlConnection(connString);
                con.Open();
            }
                
            
if(con.State ==System.Data.ConnectionState.Closed)
                con.Open();

        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章