C#编程中使用数据连接属性对话框

C#连接MySQL数据库 一、C#是什么 C#是微软公司发布的一种面向组件的编程语言,是对象的、运行于 .NET Framework 和 .NET Core 之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.N... 阅读详情

转自:http://blog.163.com/bxs_sky/blog/static/9446477720118312231662/

C#编程中使用数据连接属性对话框  


有图有真相,看看长啥样——喏,这就是数据连接属性对话框:

C编程中使用数据连接属性对话框 - linwx1978 - linwx1978的个人主页

 这个东东估计做过数据库的同志都见过,木啥希奇的,如果程序中需要用户输入一些数据库参数,用这个对话框当然是比较理想的,因为它的功能非常丰富和全面,基本上数据库连接方面的配置都能完成,很重要的是,还可以提供连接测试。俺现在要做的就是在程序中把它给调出来。环境是:C#。


把这个东东弄出来有两种基本思路,一种是调COM,一种是使用UDL文件,下面分别说一下。

调COM的思路是这样滴:

首先,在Solution Explorer视图中,展开目标工程,右键点击References,点击Add References...,在对话框中选择COM页,找到并选中下面两个选项:


Microsoft ActiveX Da ta Objects 2.7 Library
Microsoft OLE DB Service Component 1.0 Type Library

点击确定,这样,在References下面,应该就可以看到两个新的链接:ADODB和MCDASC,这就是我们将要使用的COM了。

然后,在需要使用数据连接属性对话框的地方,加入下面的代码:

MSDASC.DataLinks dlg = new MSDASC.DataLinks();
ADODB._Connection ADOcon;
//Cast the generic object that PromptNew returns to an ADODB._Connection.
ADOcon = (ADODB._Connection) mydlg.PromptNew();

非常简单,对吧,到这里这个数据库对象就得到了(不过还没有打开)。可以通过ADOcon.ConnectionString来取得连接字符串来进行后续的操作。

有些兄弟可能会有进一步的需求:希望对话框不是像本文开始给出的那幅图一样“啥都没有”,而是有一些缺省的设置,那么,我们可以把代码稍稍变化一下:

MSDASC.DataLinks dlg = new MSDASC.DataLinks();
ADODB.Connection ADOcon = new ADODB.Connection();

ADOcon.ConnectionString = "<缺省设置>";
if (dlg.PromptEdit(ADOcon)) {

    //返回OK

}

也就是把缺省设置放在ADOcon对象的ConnectionString中传给对话框,这样,运行程序,你就会看到对话框中已经有了一些缺省的设置。

如果想部署到别人的机器上,则还需要确认一下这两个COM是否存在,其中MSDASC存在于Interop.MSDASC.dll,应该和编译生成的EXE文件在一起;而ADODB存在于ADODB.dll中,必需注册到GAC中才能使用。
相比之下,使用UDL文件的办法可以说是个笨办法,后面大家会看到,远远比上面用COM来的复杂;但笨办法也有笨办法的好处,那就是:它不需要那两个额外的DLL,特别是不需要注册ADODB.DLL这一点。不管怎么说,随随便便地在别人的机器里注册个东西总是不太符合绿色环保的精神,特别是对于那些像我一样并不打算真的使用ADO接口,而仅仅是使用这个类,然后取其中的连接字符串另作使用的兄弟来说就更是如此了。
好,言归正传,先说说UDL文件是什么。这东西是出人意料的简单,没见过的同志可以自己做个实验,在桌面(或者其他随便什么地方)上点击右键,创建一个文本文件,再点击右键,点击“重命名”,把这个文件的后缀由txt改成udl,然后你肯定就发现文件的图标变了(如果还是文本文件的样子的话,多半是系统设置中隐藏了文件的后缀,需要到控制面板中修改先),双击一下这个文件:咦,这不就是数据连接属性对话框了!——对,就这么简单。然后,你可以做一些自己需要的设置,完了点击确定,对话框关闭,这些设置就存在UDL文件里了。然后,你再用右键点击这个文件,点击Open with ...,选用写字板来打开它,就会发现里面现在保存着这样几行字:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=...;Data Source=...
其中第三行就是我们需要的连接字符串了,当然其具体内容会随着你的设置而有所变化。如果你再次双击打开这个文件,就会发现你上次输入的东西这次就作为缺省值显示出来了。
这样,我们就有了一个大致的思路:在使用COM的方法中,我们是使用ADODB的ConnectionString属性为媒介与对话框交互(既作输出结果传出生成的连接字符串,又可以作为输入参数传入缺省值)的话,那么使用UDL文件的时候,就是以UDL文件为媒体进行同样的操作。但实际编程的时候,还是有三个小窍门:
首先,这个方法需要生成一个临时的UDL文件。现如今Windows的权限控制也是越来越复杂了,生成在哪里稍微要费些思量,和程序放在一起当然是个办法,更“专业”一点的话,也可以考虑LocalApplicationData,它的位置随着Windows版本的不同而略有不同,这里就不展开了。
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
其次,UDL文件必需以UNICODE格式保存(C#中缺省情况下以Utf-8格式保存文本文件)。
第三,如何在编程中打开UDL文件呢?我用的是System.Diagnostics.Process.Start("<UDL文件路径>"),试一下就知道,这个函数会创建一个新的进程来运行对话框,这样,在主进程与对话框之间就存在一个同步的问题,可以使用函数返回的System.Diagnostics.Process对象的WaitForExit()来等待对话框结束。
下面是我的代码,比使用COM的代码长多了,不过,好处就是上面说的,部署的时候不需要额外的DLL:
 string connStr= "..."; //初始值
string pathUdl = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\test.udl";
//Create a udl file in app_data
TextWriter fsWrite = new StreamWriter(pathUdl, false, Encoding.Unicode);
fsWrite.WriteLine("[oledb]");
fsWrite.WriteLine("; Everything after this line is an OLE DB initstring");
fsWrite.WriteLine(connStr);
fsWrite.Close();
//Prompt the dialog
Process process = Process.Start(pathUdl);
process.WaitForExit();
//Read the result
TextReader fsRead = new StreamReader(pathUdl);
string tempStr;
while (true)
{
    tempStr = fsRead.ReadLine();
    if (tempStr == "" || tempStr[0] != ';' && tempStr[0] != '[')
    {
        connStr = tempStr;
        break;
    }
}
fsRead.Close();
//Clear the file.
File.Delete(pathUdl);
return connStr;
对于如果你把这个udl文件给封装起来了

就需要设置一个值来保存链接字符串是其他程序可以访问


C#编程-使用属性 属性是特性的自然扩展。它们帮助类在隐藏实现的同时提供用于为私有特性获取和设置值得公共接口。属性通常具有专用的数据成员并带有访问器函数,并且是作为类字段被访问的。属性通常在类中被声明为私有,一组公开的set和get访问器方法提供对该属性的访问。get和set方法类似于任何其他方法。它们可以执行任何程序逻辑、抛出异常、被重写以及用任何修饰符进行声明。属性的主要优点在于:您可以在向变量赋值时运行一些代码行。例如,如果想要在将值赋给变量之前检查该值得范围,可以使用属性。 阅读详情

相关推荐

C#编程-属性和反射

对象是由其属性值描述的。例如,汽车可以使用它的构造、型号或颜色来描述。类似地,C#程序具有某些描述和影响它的行为的属性,例如,编译器指令。属性是证明标记,用于将程序元素(例如:类、枚举器和程序集)的行为信息传递到运行时。声明标记是由位于元素定义(例如类或方法)之上的方括号([ ])描述的。这些标签有助于扩展语言。属性用于向程序添加元数据(如:编译器指令)和其他信息(如:注释、描述、方法和类)。.NET Framework具有许多预定义属性。

RZer的博客 1121

打开“数据库连接属性”对话框

利用DataLinks对象可以打开“数据库连接属性”的对话框,方便自动生成数据库连接字符串。

Zezese的专栏 349

C#中的实体属性详解与示例

在C#中,实体属性是由属性关键字(如public、private等)和数据类型(如string、int等)组成的。属性关键字决定了属性的访问级别,而数据类型定义了属性的值。为了完整地定义一个实体属性,我们通常需要包含getter和setter方法,它们分别用于获取和设置属性的值。在这个示例中,我们定义了一个名为Name的属性,其类型为string。属性包含了一个get访问器用于获取属性值,以及一个set访问器用于设置属性值。通过这种方式,我们可以控制对属性的读写操作。

qq_35320456的博客 1567

C# winform 打开数据库连接对话框

C# winform 打开数据库连接对话框简单调用VS自带的数据源选择对话框实现数据库连接字符串配置我们经常在开发应用程序中提供择数据源和数据连接配置的接口,方便用户配置数据库连接字符串。典型的方法是将这些信息写在配置文件里,如Web.config或app.config文件里.但是客户并不是专业的编程人员,一不小心就会使连接串写错,导致系统无法运行,最好是让用户能够

沙漠里的鱼 4685

C#编程-使用反射检索元数据

术语反射通常用来指镜像。如果您站在镜子面前,镜子会反射出您的所有物理属性,如:您的身高、肤色和身体结构。在C#中也一样,反射被用于反射程序有关的所有信息。C#程序可以利用反射获得类在运行时的信息。反射在运行时获取类型信息的过程中被使用。提供运行时程序元数据信息的类在System.Reflection名称空间中。System.Refection名称空间包含的类允许程序员获取关于正在运行的应用程序信息以及将类型、值和对象动态添加到那个应用程序。

RZer的博客 1191

C#连接MySQL数据库实战指南

本文还有配套的精品资源,点击获取 简介:在Windows和.NET项目开发中,结合C#和MySQL可以打造强大的数据驱动应用。本文介绍如何通过MySQL Connector/NET驱动连接MySQL数据库,包括安装驱动、引用库、构建连接字符串、执行SQL命令、数据读取、事务处理、异常处理以及关闭连接等关键步骤。通过提供的示例代码,读者可以实际操作并加深理解。文章还提示了一些...

weixin_32869687的博客 3423

基于Visual C++的OLE DB技术

OLE DB是Microsoft开发的一种高性能的、基于COM的数据库连接技术。OLE DB 和其他Microsoft数据库连接技术的不同之处在于其提供通用数据访问的能力。所谓的通用数据访问一般具备两种功能:其一是“分布式查询”或统一访问多(分布式)数据源的功能;其二是让非DBMS数据源能被数据库应用程序访问的功能。 分布式查询 即统一访问多(分布式)数据源数据的能力。数据源既可以为同一类型(例如两个单独的Access数据库),也可以为不同类型(例如一个SQL Server数据库和一个Access数据库),

richer_live的博客 563

掌握C#数据库编程:远程连接与SQL Server交互实战

在ADO.NET中,DataSetDataTable和DataRow是构成数据操作框架的核心组件。理解它们之间的关系和区别对于高效地使用ADO.NET至关重要。DataSetDataSet可以视为一个包含多个DataTable对象的容器,这些DataTable对象通过对象相互关联,形成了一个逻辑上的数据库。DataSet相当于一个虚拟的数据仓库,能够处理多个数据源的数据。DataTable: 每个DataTable代表一个数据表,它可以包含多个。

weixin_35189483的博客 921

C#使用udl连接数据库示例

1、 OleDbConnection oleconn = new OleDbConnection(); oleconn.ConnectionString = @"File Name ="+Application.StartupPath+"\chis.udl"; OleDbCommand olecommand = new OleDbCommand(); olecommand.Connecti

nieweiking的博客 1996

C#编程中属性与数据库交互的实践

本文介绍如何在C#中创建属性,并通过按钮点击事件与数据库进行交互。展示了如何构建一个人员列表,并使用可空类型处理可能缺失的数据。通过一个具体的例子,演示了如何连接数据库,执行SQL查询,并将结果展示在界面上。最后,通过运行程序验证了代码的有效性。

weixin_32687875的博客 432

C#调用系统连接属性获取数据库连接字符串

数据库连接字符串的获取一直是编程的一大难题,通过此文档,用户可以增加系统的可移植性!

UDL文件在程序的中使用(c#代码)

UDL文件中保存着数据库连接字符串,以前有过一篇文章可以参考简单方法获取数据连接的字符串(udl文件) 今天下载了一个开源程序bts,发现里面是直接使用UDL文件来获取连接字符串的,代码如下://.......前面省略theConnectionString="File Name = "+openFileDialog.FileName;OleDbConnection conn=n

寒风雨(lanman)的专栏 3027

Unity地形优化实战:LOD、合批与HLOD打造流畅开放世界

在计算机图形学与游戏开发中,渲染优化是保障应用流畅运行的核心技术。其基本原理在于通过算法与策略,在视觉保真度与硬件资源消耗之间寻求最佳平衡,旨在提升帧率、降低功耗。这一技术的核心价值在于,它直接决定了大规模场景(如开放世界游戏)在性能受限平台(尤其是移动设备)上的可行性。具体到地形渲染这一关键应用场景,开发者需要综合运用多层次细节(LOD)技术来动态调整模型精度,并通过Draw Call合批(Batching)与GPU实例化(GPU Instancing)来大幅减少CPU到GPU的通信开销。对于超大规模世界

weixin_28077113的博客 332

C#期末复习

第一章 1、vs窗口 ①窗体设计器窗口 ②解决方案资源管理器:提供了项目及文件的视图 ③属性窗口 ④代码设计窗口 2、标识符 主要用来表示类名、变量名、方法名、属性名、数组等各种成员,由任意顺序的数字、字母、下划线组成,并且第一个字符不能是数字 3、什么是构造所有C#程序的基本单位 语句 4、什么是C#程序的基本入口 Main()方法 5、C#中关于语句的书写要求 以分号终止,且语句均为英文输入法状态下的半角符号,不能是中文输入法,和中文输入法下的半角符号。 第二章 1、引用类

m0_51779116的博客 1778

【吃瓜教程】周志华西瓜书课后习题第一章答案

第一章 1.1表1.1中若只包含编号为1和4的两个样例,试给出相应的版本空间。 编号 色泽 根蒂 敲声 好瓜(标记) 1 青绿 蜷缩 浊响 是Y 4 乌黑 稍蜷 沉闷 否N 知识储备: 假设空间: 所有假设组成的空间 版本空间:与训练集一致的假设集合 从假设空间到版本空间算法大致如下: 1.删除与正例不一致的假设且删除与反例一致的假设 2.删除与正例不一致的假设 3.删除与反例一致的假设 具体选择哪种

MaxQuYY的博客 8370

OpenClaw 技能编排实战|如何组合多个技能完成复杂任务链

多技能协作的设计思路;技能链的执行顺序控制;案例:自动监控新闻 → 摘要生成 → 发送到飞书的一站式自动化流程。

我是一个扣子,优快云博客专家,阿里云专家。专注AI(代码智能体、OpenClaw、AI视频制作)与Java全栈(Java、MySQL、Redis)实战。坚持AI赋能开发,输出有深度的技术内容。 535

C#编程-连接数据库的方法

C#编程-连接数据库的方法²         关键字系统的配置文件、连接字符串、窗体、组件、继承、XML、重用。²         描述通过系统的配置文件设置(Configure)连接字符串的动态属性(连接字符串)。利用窗体(Form)或组件(Component)的继承(Inherit)机制实现一处连接,到处使用(即整个系统只有一个与数据库的接口)。²         系统的配

liuhmy的专栏 3121

Unity中URP下的菲涅尔效果实现(个性化修改)

在上篇文章中,我们实现了 URP 下的菲涅尔基础效果,我们在这篇文章中,对其进行自定义化修改。

楠溪泽岸的博客 2063

C#的Socket编程细节

这个属性在你想要获取连接到你的服务端套接字的客户端的IP地址和端口号时非常有用,或者当你需要知道一个客户端套接字连接到的服务器的端点信息时。属性,因为它是通过监听和接受客户端连接来建立通信的。但是,如果你在服务端需要检查与特定客户端的连接状态,也可以使用。方法是服务端套接字用来接受客户端的连接请求的。当服务端套接字监听到客户端的连接请求时,它会调用。方法来创建一个新的套接字,这个新的套接字用于与客户端进行通信。属性用于获取与套接字连接的远程端点的。来获取它连接到的服务器的端点信息。服务端通常不直接使用。

愿你历尽千帆,归来仍是少年。 3049

React 源码解析 | Reconcile协调过程

上篇讲了React的工作流程,这篇详细的讲一下render过程中的beginWork函数,也就是深度优先创建Fiber树中"递"的过程。beginWork函数传入当前已经创建好的Fiber节点,返回创建/复用的第一个子FIber节点,也就是wip.child在renderRoot中,在开始创建整棵FIber树之前,会先调用prepareRefreshStack创建/复用一个新的HostRootFiber。

weixin_40710412的博客 1219

【深度学习新浪潮】2025年末AI产业动态:泡沫争议、技术突破与2026投资机会解析

2025年末的AI产业在波动中完成了阶段性调整,技术突破与政策支持构筑了长期成长基石,而结构性分化与风险隐患则要求投资者更加精准地把握机会。2026年作为“风险资产的黄金年”,AI全产业链将持续成为资本聚焦的核心,无论是算力国产化的技术突破,还是应用场景的规模化落地,都有望催生一批优质企业。投资者需立足产业阶段特征,理性看待短期波动,聚焦核心技术与政策红利,方能在AI产业的成长浪潮中把握确定性机会。

专注:太空算力、AI infra、异构调度、大模型成本工程 1809

C#连接远程数据库-连接云服务器数据库

C#连接云数据库 1.宝塔面板放行数据库默认3306端口: 2.设置数据库权限-所有人或者指定ip,指定ip需要你本机的ip: 3.操作C#写方法下的连接语句: 连接前导入引用:MySql.Data.dll (顶部有下载链接),不知道怎么导入,可以去我的另一篇博客 在顶部using一下:using MySql.Data.MySqlClient; 代码如下: using System; usin...

欣的博客 6081

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 659

使用属性(C# 编程指南)

属性结合了字段和方法的多个方面。对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个 get访问器和/或一个 set 访问器。当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set 访问器的代码块。不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读

张涵的博客 488

逆向分析-SeparationPreview.aip-分色预览-结构分析(一)-x64dbg条件日志打印-命令表达式-PS脚本

从功能上分析,仅显示使用的专色这个功能,并没有触发插件接口。使用X64dbg加载illustrator进程,切换到句柄窗口,在窗口过程中,右键刷新获取界面。在x64dbg中,在UI中可以输入一些条件表达式,能够计算出对应的值,并打印在日志中。常用的,如果非暂停,输出第一个参数。参数二是utf16的指针,utf16@字符串地址,这里的字符串地址为[[ebp-108]]参数一是utf8的,utf8@字符串地址,这里的字符串地址为[ebp-28]从界面上分析,一个颜色列表,及仅显示专色的多选框组成。

插件开发 643

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: VS2008 制作.net framework 2.0程序 安装部署的问题
下一篇: k3 生成备品出库单的触发器
MasterLonely
博客等级 码龄16年 26粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值