我正在用C#测试各种数据库连接方法。特别是,我正在测试SqlConnection和OdbcConnection上课;我的数据库是SQLServer Express(.\SQLEXPRESS)。除列出服务器上的可用数据库外,两者均运行良好。
在我的测试代码中,我使用一个"generic" DbConnection对象和一个简单的工厂来创建特定类SqlConnetion和OdbcConnetion子类的实例(它们均源自DbConnection):
DbConnection connection;
switch (connection_type)
{
case DbConnectionType.DBCONN_MSSQL:
connection = new SqlConnection(...sql connection string...);
break;
case DbConnectionType.DBCONN_ODBC:
connection = new OdbcConnection(...odbc connection string...);
break;
}
除非我尝试获取服务器上的数据库列表,否则该技巧似乎运行良好:
DataTable databases = connection.GetSchema("Databases");
foreach (DataRow database in databases.Rows)
{
String databaseName = database["database_name"] as String;
Console.WriteLine(databaseName);
}
when"connection"是一个OdbcConnection(并且请注意,数据库是相同的),我得到一个例外,说"Databases" key was not found。我列出了公开的所有键GetSchema(),而ODBC版本仅返回SQLServer公开的项的子集。我找不到有关此特定问题的任何提示。它是有记录的/预期的行为吗?难道我做错了什么?
注意:这是我如何建立ODBC连接字符串的方法:
OdbcConnectionStringBuilder builder;
builder = new OdbcConnectionStringBuilder();
builder.Driver = "SQL Server";
builder.Add("Server", ".\\SQLEXPRESS");
builder.Add("Uid", "");
builder.Add("Pwd", ""); // Using current user
builder.Add("Integrated Security", "SSPI");
connection = new OdbcConnection(builder.ConnectionString);
尚方宝剑之说
慕码人8056858
相关分类