WPF 一个数据库连接测试的实现

时间:2022-12-11 15:11:27

要实现的功能效果图如下:因为我们要测试数据是从输入框获得的,所以,我们的连接字符串不是写死在应用程序中的。下面我就详细介绍一下。

 

WPF 一个数据库连接测试的实现        WPF 一个数据库连接测试的实现

首先,我们要找到 项目下——》Properties->Setiings.setting

WPF 一个数据库连接测试的实现

新建一个连接字符串名称,类型为 string,重点重点 范围一定要设置为 用户,这样的话我们才可以重写base.在继承的基础上覆盖上次的连接字符串。 如果我们不设置为用户而设置为应用程序获的话,将会不可改变连接字符串。

在EF框架中,我们每new一个 DataContext便会有一个数据库表的映射。它的逻辑是,我们new的时候(此例子 datacontext是 StockManageDataContext)会执行

    public StockManageDataContext() :
        base(global::DataModal.Properties.Settings.Default.StockManageSystemConnectionString, mappingSource)
    {
        
        Console.WriteLine(global::DataModal.Properties.Settings.Default.StockManageSystemConnectionString);
        OnCreated();
    }
        
        public StockManageDataContext(string connection) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }
        
        public StockManageDataContext(System.Data.IDbConnection connection) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }
        
        public StockManageDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }
        
        public StockManageDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }
global::DataModal.Properties.Settings.Default.StockManageSystemConnectionString, mappingSource)这个代码中就是可以覆盖的连接字符串,我们只需要更改他就行。

连接测试代码来了来了
        public bool ConnectionTest()
        {

            //获得连接字符串
            string ConnectionString = "Data Source=" + Server.Text + ";Initial Catalog=" + Sqlname.Text + ";Persist Security Info=True;User ID=" + Account.Text + ";Password=" + Pass.Text;
            SqlConnection _SqlConnection = new SqlConnection(ConnectionString);
            try
            {

                _SqlConnection.Open();
                SqlCommand sqlcmd = _SqlConnection.CreateCommand();
                sqlcmd.CommandText = "select top 10 * from ProductInfo;";
                //如果可以连接成功则 保存数据库连接字符串          
                DataModal.Properties.Settings.Default.StockManageSystemConnectionString = ConnectionString;
                DataModal.Properties.Settings.Default.Save();//使用Save方法保存更改 n
                MessageBox.Show("测试连接正常", "恭喜");

                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("不能连接数据库,请重新设置", "警告");
                return false;

            }
            finally
            {
                _SqlConnection.Close();
            }
        }

这样就可以进行测试了,在每次登陆之前都要验证一遍。

 

还有一个比较人性化的问题,就是用户希望在每次登陆之前都有几个数据库连接默认的值,毕竟大家不愿意去动手输入那么多数据,但是又不可以直接写死在输入框(这样太low),所以,既然之前我们可以给连接字符串赋值,我们也可以获取上次的连接字符串,拆分,然后在窗体初始化时默认加载到窗体输入框嘛。

代码:(根据键值对获得,)

        public void Innital()
        {
            string connect = DataModal.Properties.Settings.Default.StockManageSystemConnectionString;
            Dictionary<string, string> dictionary = connect.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToDictionary(x => x.Split('=')[0], x => x.Split('=')[1]);
            List<string> test = new List<string>(dictionary.Values);
            for (int i = 0; i < test.Count; i++)
            {
                Server.Text = test[0];
                Sqlname.Text = test[1];
                Pass.Text = test[4];
                Account.Text = test[3];
            }
        }