• MySQL的DataConnectionDialog


    这两天做一个小工具,需要让用户提供数据库连接字符串,锉方法是让用户输入一个字符串,稍好点方式的是提供一个字符串让用户去改,更好呢,就是提供一个像VS中那样一个可以生成数据库连接字符串的对话框了。从很久以前开始,M$就提供了这样的组件,我至少在VS的安装目录下发现了两个Assembly中包含了DataConnectionDialog,分别是:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Microsoft.Data.ConnectionUI.Dialog.dll和C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Microsoft.VisualStudio.Data,但是今天我们不使用这两种方式,为啥咧?原因是他们里面没有带MySQL类型的数据源,虽然也可以通过不算十分复杂的过程将MySQL加进来,但是对于懒人来说,什么都不做岂不更好,我正好就是个懒人,在允许的情况下,我更愿意让脑神经放松下来,去干点更值当点的工作。

    最初觉得既然使用了MySQL Connector/Net,那这个Dialog就应该是在MySql.Data.dll中了,但是一阵好找发现这个MySql.Data命名空间下,连个继承Form的类都没有,貌似不可能提供这种对话框的功能了,无奈之下想起了MySql Connector/Net应该是提供源代码的,于是到MySql的官网上下载了一份源代码,看看到底内部是怎么做的,很失望,依然是没有找到,不过在这份源代码的解决方案中发现了一个未能正常加载的项目,MySql.VisualStudio!哈哈,看着名字就像,按常理来说,应该有个MySql.VisualStudio.dll存在某处,F3一下,果然,在C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Oracle\MySQL Connector Net\6.4.4文件夹中找到了,于是赶紧引用到项目中,一试,果然获得了MySql的连接字符串

    示例代码:

            private void btnConnect_Click(object sender, EventArgs e)
            {
                ConnectDialog dialog = new ConnectDialog();
    
                dialog.StartPosition = FormStartPosition.CenterScreen;
    
                if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    try
                    {
                        txtConnect.Text = dialog.Connection.ConnectionString;
                    }
                    catch
                    {
                    }
                }
            }
    

    这里稍值得说明的是为啥要放在一个try里呢,原因是,当你点击了"Connect"按钮后,其实这个Dialog只是简单的返回了一个DialogResult.OK,在调用Dialog.Connection属性时会尝试连接数据源,如果你提供的连接选项有问题,那就要报异常了,因此包在一个try...catch中了。

  • 相关阅读:
    MYSQL利用merge存储引擎来实现分表
    IoC原理及实现
    prometheus + grafana安装部署(centos6.8)
    PHP Laravel定时任务Schedule
    排序算法杂谈(三) —— 归并排序的非递归实现
    排序算法杂谈(二) —— 冒泡排序的递归实现
    排序算法杂谈(一) —— 量化数组的有序程度
    排序算法(七) —— 快速排序
    排序算法(六) —— 归并排序
    排序算法(五) —— 堆排序
  • 原文地址:https://www.cnblogs.com/think8848/p/2321712.html
Copyright © 2020-2023  润新知