Server? 为什么要经常使用ODBC衔接SQL

  • 电脑网络维修
  • 2024-11-15

为什么要经常使用ODBC衔接SQL Server?

ODBC 和 JDBC 都提供了一种通用的模式来访问数据库,准许开发人员经常使用规范 SQL 语句来操作各种不同类型的数据库。ADO.NET则是微软针对 .NET 平台开发的数据库访问接口,提供了与 ODBC 相似的配置,但愈加面向对象,具备更好的性能和可裁减性。

ODBC是什么?

ODBC是什么?我也不知道,用摘抄一个互联网上的话来解释:ODBC英文全称为:Open>

// 由于修正了好几次,所以消息我曾经对不上了,大略发生了上方的这些Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=10; [Login] initialization=0; authentication=0; [Post-Login] complete=14074;或许Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake.(provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)System.IO.EndOfStreamException: End of stream reached或许SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL。

遇到这个疑问,咱们首先想在衔接字符串上操作去修复处置这个疑问,然而最后没有处置,咱们想在公司复现,首先间接在我自己电脑本地衔接sqlserver2019是没有疑问的,而后没方法又在主机装置了sqlserver2008也没有疑问(这里我还傻不拉几想着经常使用容器部署一个sqlserver2008快,而后信了一个博客老哥的鬼话去拉取他的镜像,结果拉取上去是2019版本的,起初查阅资料才知道sqlserver2008哪里有什么镜像),而后又模拟正式环境容器化部署,而后终于复现了上方的失误,而后就开局尝试,咱们也在网络上查阅了资料,终于在一个文章上看到sqlserver2008不支持TLS1.2,而后依照那个文档的方法去降低容器TSL版本,比如dockerfile参与

RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnfRUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

结果还是不行,失误变了,继续查阅文章,而后终于找到【嘿dotNet】群众号老哥的一个博客,他在2019年遇到了这个疑问,我将他总结性的那局部摘抄进去

只管这个文章的评论中也提到了更新数据库版本可以处置,然而?甲方那边更新数据库必需不事实的,那只好思考换个组件什么的?我也尝试了EFCore依赖的包Microsoft.Data.SqlClient也是不行,所以这个时刻就咨询其余部门(java)那边衔接反常不?他们回复没有疑问,而后就发生了要不再搞个java服务去衔接的念头???这多难堪,衔接微软家的数据库还须要去费事其余言语???

指导说再找找资料 。。。而后就找到了Microsoft ODBC Driver for SQL Server

开局操作

在Nuget上搜查odbc,排名第一个的一个包是微软和dotnetframework保养的,最近一次性更新在几天前,还是8.0.0版本怪新,那就依据文档去操作吧,这里须要留意的是经常使用ODBC去操作数据库是须要手动装置驱动的,比如我本地调试须要去下载驱动装置

上方来演示一个衔接的小示例,新建一个控制台名目名字叫做MsSqlNetCoreOdbc(这里我间接创立.Net6的控制台名目),而后装置nuget包

编写如下代码

using System.Data.Odbc;try{var str = "Server=xxxx;Database=dbName;Uid=sa;Pwd=123xxxx;Encrypt=no;driver=ODBC Driver 18 for SQL Server";await using var connection = new OdbcConnection(str);connection.Open();string sqlQuery = "Select @@version";var command = new OdbcCommand(sqlQuery, connection);var reader = command.ExecuteScalar();Console.WriteLine(reader.ToString());Console.WriteLine("conn success");Console.WriteLine("over");}catch (Exception ex){Console.WriteLine($"message:{ex.Message} stackTrace:{ex.StackTrace}");}Console.ReadLine();

这里光看这个示例的话,和之前经常使用System.Data.SqlClient的改变确实不大,换了一个包,经常使用OdbcConnection创立DbConnection(须要留意的是假设你要经常使用到参数化等就须要留意了,它的参数化不是@key,而是?key? 我

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8558.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号