Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#语法和数据库连接_C# - Fatal编程技术网

C#语法和数据库连接

C#语法和数据库连接,c#,C#,对于了解C#的人来说,这一定是一个非常简单的问题,但我有点不知所措 类DbConnection派生自IDbConnection;类OleDbConnection和OdbcConnection。我需要objConnection是OleDbConnection或OdbcConnection string connStr = CONNECTION_STRING.Replace("<FILENAME>", fullFileName); IDbConnection objConnection

对于了解C#的人来说,这一定是一个非常简单的问题,但我有点不知所措

DbConnection
派生自
IDbConnection
;类
OleDbConnection
OdbcConnection
。我需要
objConnection
OleDbConnection
OdbcConnection

string connStr = CONNECTION_STRING.Replace("<FILENAME>", fullFileName);
IDbConnection objConnection = (myswitch) ? (IDbConnection)new OdbcConnection(connStr) 
                                         : (IDbConnection)new OleDbConnection(connStr);
objConnection.Open();
objConnection.GetSchema(...);
objConnection.Close();
string connStr=CONNECTION\u string.Replace(“,fullFileName”);
IDbConnection objConnection=(myswitch)?(IDbConnection)新的ODBConnection(connStr)
:(IDbConnection)新的OLEDB连接(connStr);
objConnection.Open();
GetSchema(…);
objConnection.Close();
DbConnection
无法实例化,但它有一个我想调用的方法
GetSchema
(我还调用
open
close
)。IDbConnection没有这些方法st to
DbConnection
不起作用。有没有一种方法可以实现这些调用而不必使用大的
if
和重复代码

编辑:我正在使用这些连接读取Excel文件,显然我需要64位计算机的OdbcConnection(不确定,仍在调查中)

您不能使用此方法吗???

替换:

IDbConnection objConnection = (myswitch) ? (IDbConnection)new OdbcConnection(connStr) 
                                     : (IDbConnection)new OleDbConnection(connStr);
与:

由于
DbConnection
实现了
IDbConnection
,因此使用类而不是接口没有问题


事实上,在这种特定情况下,它应该是首选的方法,因为类具有您需要的内容,而接口没有。这样,您的
objConnection
变量将能够使用
Dbconnection
的方法和属性,而不会出现任何编译器错误。

强制转换到Dbconnection时是否有任何异常?可能只需将objConnection声明为Dbconnection而不是idbconnectional。因此,objConnection.Open()应该用using()包装因此,它在发生异常时得到处置几乎不是一个解决方案,因为OP不适用于与SQL相关的类。她的问题似乎更多地与对象生成问题有关,而与此无关。如果要读取excel文件,请尝试以下操作:Interop打开excel实例(您可以在taskmgr中看到它);这对我来说不方便。谢谢!出现问题,因为默认情况下使用的是外部内部DbConnection类,而不是标准的C#one。但是需要强制转换为DbConnection,因为RHS上的两个表达式都需要具有相同的类型,在这种特殊情况下,C#无法推断该类型需要为DbConnection。
IDbConnection objConnection = (myswitch) ? (IDbConnection)new OdbcConnection(connStr) 
                                     : (IDbConnection)new OleDbConnection(connStr);
// no need to cast here.
DbConnection objConnection = (myswitch) ? new OdbcConnection(connStr) 
                                     : new OleDbConnection(connStr);