对于熟悉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();类DbConnection不能实例化,但是有一个要调用的方法GetSchema (我还调用了open和close)。IDbConnection没有这些methodsCast to DbConnection不工作。有没有一种方法可以实现这些调用而不需要大量的if和代码的重复?
编辑:我使用这些连接来读取Excel文件,显然我需要64位计算机的OdbcConnection (尚不确定,仍在调查)
发布于 2013-06-07 12:11:53
取代:
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);由于DbConnection实现了IDbConnection,所以使用类而不是接口没有问题。
实际上,在这种特殊情况下,它应该是首选的方法,因为类有您需要的东西,但是接口没有。这样,您的objConnection变量将能够使用Dbconnection的方法和属性,而不会出现任何编译器错误。
发布于 2013-06-07 11:48:31
SqlConnection con = new SqlConnection();
con.ConnectionString = ConnectionString;
insertCommand.Connection = con;
con.Open();
affectedRows = insertCommand.ExecuteNonQuery();
con.Close();你不能用这种方法吗?
https://stackoverflow.com/questions/16983243
复制相似问题