这两天做一个小工具,需要让用户提供数据库连接字符串,锉方法是让用户输入一个字符串,稍好点方式的是提供一个字符串让用户去改,更好呢,就是提供一个像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中了。