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

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

       

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

新建一个连接字符串名称,类型为 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];
            }
        }
				
时间: 2024-11-03 21:38:32

WPF 一个数据库连接测试的实现的相关文章

图模.数据库连接测试.简单操作

1.感受: 1.Oracle和MySQL放在一起操作时,才发现,两者基本使用的类都是一样的,只是加载的驱动不同("Class.forName(???);").一定是定了某种协议之类的... 2.具体 Class.forName(???); 的参数,到底填什么驱动名呢?一般都是 ???Driver之类的.可以用以下的方式来确定: (1)网上搜索,此种数据库 使用的驱动类名是什么.一定是都是 包名.类名的形式,如 aaa.bbb.ccc.ddd (2)查看自己的 jar,看里面的层次结构

WPF 一个弧形手势提示动画

这是一个操作提示动画,一个小手在屏幕上按照一个弧形来回运动<Window x:Class="LZRichMediaWall.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:LocWindow="clr-n

动手写一个Remoting测试工具

基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间.所以,我想写一个能自动测试remoting接口的小工具InterfaceTester.而且,当分布式系统中的某个remoting接口出现bug时,该小工具可以提交需要模拟的数据,以便在调试remoting服务的环境中,快速定位和解决bug. InterfaceTester运行起来后的效果如下图: 1.如何使用 (1)首

关于创建主键和索引的关系一个小小测试

创建主键时,所对应的列如果没有索引,数据库默认会自动创建一个索引:如果对于列有索引,那么创建主键不会再创建索引.这里要注意,列值必须满足主键的要求(唯一,非空),简单测试如下: SQL> create table wxlun_pri(a number); Table created. SQL> alter table wxlun_pri add constraint PRIMARY_KEY_REPLY primary key (a);     ------创建主键约束 Table altere

经典笔试题:用C写一个函数测试当前机器大小端模式

“用C语言写一个函数测试当前机器的大小端模式”是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 1 #include <stdio.h> 2 3 union test 4 { 5 int a; 6 char b; 7 }; 8 9 int endian_test(void) 10 { 11 union test t1; 12 t1.a = 1; 13 return t1.b; 14 } 15 16 int main(void) 17 { 18 int i =

express创建一个工程测试

创建一个工程 现在已经有express 键入:express myapp (myapp是随意起的工程名称) 你会发现多了一个 C:\Program Files\nodejs\myapp 目录 默认情况下:里会自动创建 这几个文件,不做解释,相信有过开发经验的同学都能一眼明了. 复制node_modules到myapp下面 环境搭建到此完工,下面做一个demo测试! 在myapp下新建helloworld.js复制代码 代码如下: var http = require("http");h

黑马day11 动态代理&amp;模拟一个数据库连接池

数据库连接池:说白了就是在一个池子中(容器)中放了很多的数据库连接,当用户需要的时候就从中取出来一个用,用完了就放回连接池中. 优点:极大的提高了数据库的效率. 对于自定义的数据库连接池我们使用一个LinkedList做数据库连接池.这个集合的特点是增删快,查询慢. 自定义一个数据库连接池的步骤: 1.自定义一个类实现DataSource接口. 2.定义一个List<Connection> list=new LinkedList<Connection>();存放数据库连接. 3.初

object-c编程tips-global_queue的一个小测试

前一段进行网络基础库构建的时候,网络发送的加密组包以及网络返回的回调解包处理都是在单独的主线程处理. 跟踪程序的时间发现这部分耗时还挺大,于是决定使用多线程处理,至少不应该使用主线程. 一直以来网上都在强调多线程的dispatch的妙用,自己仅仅是会用而没有实际测试过它的性能.今天将上次测试的结果发出来,说实话dispatch的多线程效率确实很高,跟cpu的核心数有很多关系. 测试思想: 使用一个自己写的耗时函数,让其执行一次所需要的时间进行记录.然后使用dispatch_global_queu

WPF 一个空的 WPF 程序有多少个窗口

原文:WPF 一个空的 WPF 程序有多少个窗口 好多小伙伴说 WPF 的程序有五个窗口,但是我尝试使用了 EnumThreadWindows 去获取的时候居然拿到了 10 多个窗口 在 WPF 内部的5个窗口之 MediaContextNotificationWindow 听说有五个窗口 可以通过 user32 的 EnumThreadWindows 找到一个线程的窗口 delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);