运行时设置数据库连接字符串
数据库连接字符串这个东西复杂倒不是很复杂,我们用的时候用到的属性也没几个,就什么“Provider”、“Initial Catalog”、“data source” (Provider不同,当然设置也有所不同)等等,再加用户名、密码。可就是比较的烦一点。如果在运行时能够调出我们在设计时用的那个设置连接字符串对话框就事半功倍了。在Delphi里这非常的简单,在Delphi的ADODB单元里已经封装了相应的方法,只要uses adodb ,然后
edit1.Text := adodb.PromptDataSource(handle,edit1.Text);
连接字符串就在那个edit1里了。
在Delphi里如此简单的东东,到了.NET里是如何做的呢?在MSDN里翻了半天愣是没发现。不过想想它们设置连接字符串时调出来的窗口跟以前是一样的,用的应该是相同的东西(翻旧的MSDN可能有)。后来还是在CodeProject(http://www.codeproject.com/cs/database/DataLinks.asp )里找到了方法,果然不出所料是旧东西翻新的。代码量比Delphi里多一点点,不过也是很简单。
先加引用,一个是adodb.dll(在$Program Files$"Microsoft.NET"Primary Interop Assemblies",这个在添加引用里就有),一个是oledb32.dll(在$Program Files$"Common Files"System"Ole DB",这个要点“浏览”按钮去选)。
基本代码如下:
MSDASC.DataLinks datalinks = new MSDASC.DataLinksClass();
ADODB._Connection tmpconc = new ADODB.ConnectionClass();
if (TextDbstr.Text == String.Empty) {
tmpconc = (ADODB._Connection)datalinks.PromptNew();
TextDbstr.Text = tmpconc.ConnectionString;
}else{
Object oconc = tmpconc;
tmpconc.ConnectionString = TextDbstr.Text;
if (datalinks.PromptEdit(ref oconc))
TextDbstr.Text = tmpconc.ConnectionString;
}
如果你用的是OleDbConnection,就可以用上面得到的字符串当作ConnectionString了,但如果你用的是SqlConnection如果直接用的话,连接时会抛出System.ArgumentException: 说不支持关键字: “provider”。显然对SqlConnection来说provider是定的,所以对连接字符串来说这一项设置多余了(我们在VS.NET中设计时也能看到它的连接串是没有provider的)。那么我们在上面产生的连接字符串就不能直接用了。作简单的处理就可以了(就是去除provider部分)。
下面是测试代码:
OleDbConnection:
OleDbConnection connection = new OleDbConnection();
try{
connection.ConnectionString = TextDbstr.Text;
connection.Open();
MessageBox.Show("Connection OK");//在OleDbConnection下正常连接
}catch (Exception ex){
MessageBox.Show(ex.ToString());
}finally{
connection.Close();
}
SqlConnection没有作任何处理时:
SqlConnection connection = new SqlConnection();
try{
connection.ConnectionString = TextDbstr.Text;
connection.Open();
MessageBox.Show("Connection OK");
}catch (Exception ex){
MessageBox.Show(ex.ToString());//在Sqlconnection时,直接用的话会抛出System.ArgumentException
}finally{
connection.Close();
}
作了相应处理后正常了:
SqlConnection connection = new SqlConnection();
try{
int pos = TextDbstr.Text.IndexOf(";");//偷了个懒,系统产生的连接字符串,在第一个分号前的就是provider部分
string constr = TextDbstr.Text.Remove(0,pos);
connection.ConnectionString = constr;
connection.Open();
MessageBox.Show("Connection OK");//这下正常了
}catch (Exception ex) {
MessageBox.Show(ex.ToString());
}finally{
connection.Close();
}
转载于:https://www.cnblogs.com/vcool/archive/2007/11/13/957606.html
运行时设置数据库连接字符串相关推荐
- 运行时修改数据库连接字符串(ConnectionString)
在vs2005中我们可以很方便的使用"Properties.Settings.Default.anjouConnectionString"这样的形式来获得数据库连接字符串,但是数据 ...
- .NET 运行时设置
.NET 运行时设置 .NET 5+(包括 .NET Core 版本)支持使用配置文件和环境变量在运行时配置 .NET 应用程序的行为.如果出现以下情况,则运行时配置是一个不错的选择: 你不拥有或控制 ...
- JVM常量池最全详解-常量池/运行时常量池/字符串常量池/基本类型常量池,看这一篇就够了
JVM常量池最全详解-常量池/运行时常量池/字符串常量池/基本类型常量池,看这一篇就够了! 常量池详解 1. 字面量和符号引用 1.1 字面量 1.2 符号引用 2. 常量池vs运行时常量池 3. 常 ...
- 安装DNN时,数据库连接字符串的设置
最近接触到了DNN,觉得这是一个东西. 关于DNN的安装网上有很多文章.我在安装我的第一个DNN程序时,虽然看了那些文章,但是还是无济于事,有的时候,我的系统配置和别人的就是不一样. 安装DNN程序时 ...
- 利用运行时设置UITextField 光标颜色
#import "XMGLoginRegisterTextField.h" #import <objc/runtime.h> @implementation XMGLo ...
- loadrunner脚本运行时设置:Run Logic设置运行次数
Run Logic
- android xml设置roboto字体,Android:想要为整个应用程序而不是运行时设置自定义字体...
带有roboto字体的TextView示例: attr.xml<?xml version="1.0" encoding="utf-8"?> Rob ...
- [JVM]了断局:常量池 VS 运行时常量池 VS 字符串常量池
一.前言 最近在看JVM, 常量池, 运行时常量池,字符串常量池 这个看的有点懵. 整理一下. class常量池 是在编译的时候每个class都有的. 在编译阶段,存放的是常量的 符号引用 . ...
- class常量池、运行时常量池 和 字符串常量池 的区别
文章目录 一.概念 1.class常量池(Constant Pool) 1.1.字面量 1.2.符号引用 2.Runtime Constant Pool( 运行时常量池 ) 3.String Pool ...
- ART运行时垃圾收集(GC)过程分析
ART运行时与Dalvik虚拟机一样,都使用了Mark-Sweep算法进行垃圾回收,因此它们的垃圾回收流程在总体上是一致的.但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略.不 ...
最新文章
- 设计一个成绩分类 输入成绩 输出优秀_BenQ 明基 PD2720U 27寸 Thunderbolt3.0 专业设计显示器开箱评测...
- 使用Statement接口实现增,删,改操作
- 判断是否是ie浏览器 前端js_JS判断是否是IE浏览器
- 缓冲流的效率测试_复制文件
- c++的提示类未定义_推荐一款适合初学者的C/C++IDE
- java 不同类数据的传递_java 数据在不同类之间的传递
- pojo类中的布尔类型的变量为什么不能加is
- 关于document对象
- python字体描边_使用 python 将文泉驿字体导出为 fnt 格式的bitmap font
- QScrollArea使用详解
- 设计实现抽象数据类型“有理数”
- MySQL的索引原理,索引的类型有哪些,如何创建合理的索引,索引如何优化。
- 精读《设计模式 - Adapter 适配器模式》
- nodejs 下使用js封装console.log方法输出自定义的彩色字体,遇到Octal escape sequences are not allowed in template strings
- SOM网络1:原理讲解
- [网络应用]远景论坛今早上不去了{5:50测试}
- Palm OS HP WebOS
- Android学习屏幕适配技能包
- 关于汉字与Ascii码
- Linux使用Docker安装Nacos并配置MySQL数据源,将Springboot的配置文件部署到Nacos