C/S架构的程序中,客户端环境不安装MYSQL、ORACLE等数据库的连接组件的情况下向目标数据库查询数据集

郑鹏飞3年前爱T1035

我有一个C/S架构的程序,服务端是MSSQL数据库。

现在需要在C客户端中查询MYSQL、ORACLE的数据集,在C客户端中进行展示,做得到吗?

1、C客户端的环境不需要安装MYSQL、ORACLE的客户端连接组件;

2、C客户端的网络环境与MYSQL、ORACLE是不通的。

以上条件下,能做到吗?

答案是可以的!方法是在MSSQL的存储过程中,接收C客户端提交过来的查询条件,动态生成MYSQL、ORACLE的数据库查询代码,然后由MSSQL将动态代码提交到目标数据库中进行查询。

操作步骤:

1、在MSSQL中安装目标数据库的ODBC连接组件:

    此组件是在MSSQL中安装的,所以C客户端是不需要进行安装和配置的;

2、确认MSSQL与目标数据库是可以连接的:

    不需要C客户端与目标数据库在网络层面上互通,只需要保证MSSQL与目标数据库是通的即可。

3、在MSSQL中配置ODBC的系统DSN连接:

    在系统DSN里配置完整的与目标数据库的连接信息,确认测试连接是成功的。

4、在MSSQL中配置“链接服务器”:

image.png

    数据源:ODBC系统DSN与目标数据库连接的名称;

    安全性:配置目标数据库的登录用户和密码

    服务器选项:我设置了下面这些信息

image.png


5、在MSSQL的存储过程中建立如下存储过程:

create proc [dbo].[在目标数据库中运行动态代码并返回数据集]
	@sql varchar(8000)
	,@OO bit = 0 output
	,@OO1 varchar(500) = '' output
as
set nocount on;
Begin Try
	exec(@sql) at [链接服务器名称]	
	set @OO = 1;
	set @OO1 = '';
End Try
Begin Catch
	set @OO = 0;
	set @OO1 = LEFT(ERROR_MESSAGE(),500)
End Catch

6、在C客户端中生成需要在目标数据库中查询的动态SQL代码,或者是将参数提交到MSSQL的存储过程中,再由MSSQL的存储过程来生成向目标数据库查询数据集的动态代码,提交到上面生成的存储过程中即可实现。

7、在MSSQL中可以用以下代码进行测试:

declare @OO bit, @OO1 varchar(1000)
exec [在目标数据库中运行动态代码并返回数据集]
	@sql = 'select ....'
	,@OO = @OO output
	,@OO1 = @OO1 output
select @OO,@OO1


我是郑鹏飞。 如果您觉得我的文章对您有帮助,可以点击站点上的 关于站点/支持和帮助
转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。

相关文章

真正有效的关闭Windows更新(Windows 10更新,Win10更新)的方法!且随时可以控制是否开启

真正有效的关闭Windows更新(Windows 10更新,Win10更新)的方法!且随时可以控制是否开启

本章内容:1、关闭后的效果2、关闭的方法3、随时可以开启    网上一大堆所谓的关闭Windows更新的方法,试了没一个真正靠谱的,所以就自己折腾了一些时日,真的把它给解决了!&n...

多域名的同一个网站,需要部署https,教你如何只用一个SSL证书即可完成部署,且不提示不安全的连接信息。URL重写(重定向插件IIS Write)的使用与规则设置方法

多域名的同一个网站,需要部署https,教你如何只用一个SSL证书即可完成部署,且不提示不安全的连接信息。URL重写(重定向插件IIS Write)的使用与规则设置方法

比如我的网站,我同时申请了两个域名vxmat.cn和vxmat.com,我需要实现1、两个域名都访问同一个网站;2、同时支持带www和不带www的访问;3、必须部署https,当用户以http方式访问...

今天2022.8.6微信小程突然莫名其妙的出现了访问服务端接口时一直返回500错误

今天2022.8.6微信小程突然莫名其妙的出现了访问服务端接口时一直返回500错误

非常确定的是,地址是绝对能够访问的。而且接口运行在本地也没问题。反复检查了小程序的合法域名也都是正常的。这莫名奇妙的。。。原来是前些天设置目录NTFS权限时弄出了乌龙,导致IIS应用程序无法访问到目录...

检查 RichTextBox ScrollBar thumb 是否在滚动条的底部

检查 RichTextBox ScrollBar thumb 是否在滚动条的底部

Imports System.Runtime.InteropServices Public Class jMyBox    &nbs...

可能这就是C#比不上别的语言流行的其中的一个原因:.net的各种版本不兼容,高版本竟然也不向低版本兼容!这太扯蛋了!

可能这就是C#比不上别的语言流行的其中的一个原因:.net的各种版本不兼容,高版本竟然也不向低版本兼容!这太扯蛋了!

我的VxTerm更新到2.4的时候,手贱,就把.net降到了3.5,想着会不会可以在Win7、Win10默认情况下可以直接运行。结果它娘的,竟然是不行的!虽然,可以通过在程序目录下建立VxTerm.e...

警惕!警告全网!你的、我的、所有人的网络,都不安全!

警惕!警告全网!你的、我的、所有人的网络,都不安全!

注意:我这里所说的被监听,并不是指国家的安全部门的监听。而是指被非法份子监听。我也不是危言耸听,也不是标题党,也不会到处复制粘贴那些自己都看不懂的信息。我的文章里所说的任何信息都是经过我自己亲自验证的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。