为什么我需要Odbc读取器的实例,但现在是Odbc连接?

时间:2009-11-04 08:48:09

标签: .net odbc c++-cli

在班级,我已声明:

System::Data::Odbc::OdbcConnection conn;
System::Data::Odbc::OdbcDataReader datareader; //doesnt work
System::Data::Odbc::OdbcDataReader^  datareader; //works

但是,dataReader必须声明为OdbcDataReader^。我不明白为什么。

2 个答案:

答案 0 :(得分:0)

我不确定这是否可以回答你的问题但是这里有:

Connection和DataReader类在.NET Framework上成对出现,具体取决于所使用的数据库技术。因此,您有OdbcConnectionOdbcDataReaderSqlConnectionSqlDataReader等。您必须成对使用它们。无论如何,请注意所有这些都实现了公共接口IDataConnectionIDataReader

修改即可。好吧,我完全误解了这个问题。 : - /

我通常使用C#,而不是C ++,但我认为这是因为您可以直接创建OdbcConnection的新实例,但对于OdbcDataReader,您需要通过执行来获取实例相应ExecuteReader上的OdbcCommand方法。 ExecuteReader返回指向新OdbcDataReader对象的指针。

答案 1 :(得分:0)

使用OdbcConnection conn;直接实例化连接对象(在堆栈上)。不确定这是不是一个好主意,但它是可能的。

你不能用OdbcDataReader datareader;做到这一点,因为该类只有隐藏(私有/内部)构造函数。这是设计使然,你不应该直接创建DataReader,而是通过调用ExecuteReader()来获取它们。并且ExecuteReader返回OdbcDataReader^。请参阅MSDN