.net 无法将OdbcConnection设置为OdbcCommand.Connection
在类级别上,我创建了引用: System::Data::Odbc::Odbc连接 在某些方法中,我想将其设置为odbcCommand。连接方式如下: ::System::Data::Odbc::OdbcCommand命令; Command.Connection=此->连接 它报告“无法将参数1从'System::Data::Odbc::OdbcConnection'转换为'System::Data::Common::DbConnection^'” 如果Command.Connection需要OdBcConnection,我不明白为什么它会提到common::DbConnection?.net 无法将OdbcConnection设置为OdbcCommand.Connection,.net,c++,odbc,.net,C++,Odbc,在类级别上,我创建了引用: System::Data::Odbc::Odbc连接 在某些方法中,我想将其设置为odbcCommand。连接方式如下: ::System::Data::Odbc::OdbcCommand命令; Command.Connection=此->连接 它报告“无法将参数1从'System::Data::Odbc::OdbcConnection'转换为'System::Data::Common::DbConnection^'” 如果Command.Connection需要Od
谢谢命令。Connection需要System::Data::Common::DbConnection的句柄(^)
public:
property OdbcConnection^ Connection {
OdbcConnection^ get ();
void set (OdbcConnection^ value);
}
相反,尝试这样做:
System::Data::Odbc::OdbcCommand Command;
Command.Connection = %Connection;
一元%operator()返回对CLI对象的CLI跟踪引用。跟踪引用对句柄和值类型有效
对评论的答复:
以这种方式创建托管对象时:
OdbcConnection Connection;
它是一种特殊类型的C++/CLI对象,在堆栈上分配,并指向托管堆上的托管对象。它不是有效的托管引用对象。要创建托管引用,您需要执行以下操作
OdbcConnection^ Connection; // In the class definition
// In the class constructor do the following:
Connection = gcnew OdbcConnection();
施工中应删除DB连接,以保证及时清理。但托管对象不需要它,它们会自动删除谢谢!但是我不明白为什么仅仅参考是不够的。我在上面的回答中补充了答案。