大家早上好,
最近,我在PythonandC#中遇到了DB连接问题。
例如,假设我们希望连接Server。在.NET (C#)中,我们只需知道服务器名称、凭据,就可以使用SqlConnection对象连接到DB。那很清楚了。
现在,在Python中,当使用pypyodbc时,我们需要另外指定驱动程序。接下来的问题是:
为什么在Python中我们必须指定驱动程序?我们不必在C#中指定它。
另一方面,如果指定驱动程序是如此关键,那么为什么我们不必须在C#中指定它呢?
我知道,在C#中,我们有专门用于Server的类( Python是吗?)或者pypyodbc是唯一的选择?),这是否意味着它有某种方法来解决使用哪个驱动程序?甲骨文也是这样吗?
发布于 2018-04-12 06:34:04
我对python一无所知,但我认为这应该能回答您的主要问题:
SqlConnection是专为使用server而设计的,因此不需要指定驱动程序,因为它使用自己指定的驱动程序。
来自Microsoft上的SqlConnection.ConnectionString性质页面:
ConnectionString类似于OLE DB连接字符串,但并不相同。与OLE DB或ADO不同,返回的连接字符串与用户集ConnectionString相同,如果持久化安全信息值设置为false (默认),则减去安全性信息。用于Server的.NET框架数据提供程序不会在连接字符串中持久化或返回密码,除非将持久化安全信息设置为true。
(强调我的,“只是为了提供上下文”中的其他内容。)
然后,在接下来的一页中:
Server .NET 数据提供程序使用自己的协议与Server进行通信。因此,它不支持在连接到Server时使用ODBC数据源名称(DSN),因为它没有添加ODBC层。
(再一次强调我的。)
在使用其他连接类(如OdbcConnection或OleDbConnection )时,需要在连接字符串中指定驱动程序。
对于Odbc连接串,使用关键字Driver,
对于OleDb连接串,使用关键字Provider。
关于甲骨文,.Net框架有一个名为System.Data.OracleClient的名称空间,但不推荐它(来自甲骨文和ADO.NET):
不推荐System.Data.OracleClient中的类型。这些类型在当前版本的of.NET框架中仍然支持,但在以后的版本中将被删除。Microsoft建议您使用第三方Oracle提供程序。
我猜甲骨文自己的ADO.Net实现也适用于它自己的驱动程序。如果你真的想知道,你可以在他们的文档中查找。
https://stackoverflow.com/questions/49788675
复制相似问题