无法将OdbcConnection设置为OdbcCommand.Connection

时间:2009-11-04 07:22:10

标签: .net c++ odbc

在课程级别,我创建了参考:

System :: Data :: Odbc :: OdbcConnection Connection;

在某些方法中,我想将它设置为odbcCommand.Connection,如下所示:

:: System :: Data :: Odbc :: OdbcCommand Command; Command.Connection =这 - >连接;

它报告“无法将参数1从'System :: Data :: Odbc :: OdbcConnection'转换为'System :: Data :: Common :: DbConnection ^'”

如果Command.Connection需要OdBcConnection,我不明白它为什么会说常见:: DbConnection? 谢谢

1 个答案:

答案 0 :(得分:0)

Command.Connection想要一个句柄(^)到System :: Data :: Common :: DbConnection

public:
property OdbcConnection^ Connection {
    OdbcConnection^ get ();
    void set (OdbcConnection^ value);
}

而是尝试这样做:

System::Data::Odbc::OdbcCommand Command; 
Command.Connection = %Connection;

一元%运算符(Tracking reference)返回对CLI对象的CLI跟踪引用。跟踪引用对句柄和值类型有效。

对评论的回应:

以这种方式创建托管对象时:

OdbcConnection Connection;

这是一种特殊类型的C ++ / CLI对象,它们在堆栈上分配,并指向托管堆上的托管对象。它不是有效的托管引用对象。要创建托管引用,您需要执行以下操作。

OdbcConnection^ Connection; // In the class definition 

// In the class constructor do the following: 
Connection = gcnew OdbcConnection();

应该在构造函数中删除DB连接,以保证及时清理。但是托管对象不需要它们,它们会自动删除