none
COM + ADO.NET RRS feed

  • Pergunta

  •  

    Olá a todos!!!!

    Estou fazendo alguns testes criando uma COM usando Visual C++ em modo gerenciavel (\clr), já consegui acessar um banco postgres por ADO.NET de modo bem facil, só que agora iniciou uma grande dúvida que ainda não consegui resolver.

    Usando ADO simplemente eu consigo abrir uma conexão no Visual Basic e passar esta conexão aberta para dentro da minha COM, só que como faço isto usando ADO.NET??? Passando simplesmente o objeto como variant para dentro de minha COM, sempre dá um erro falando que a SQLConnection não esta aberta qdo tento usar um DataReader, mesmo sabendo que esta foi aberta no ambiento do VB.NET.

    Ando procurando pelo Google e em apenas um site li um artigo falando que isto não é possível!!! Mas se isto realmente não for possível, não tenho condições de migrar para o .NET, pois todas as aplicações da empresa a norma  é o Ambiente de Aplicação abrir a conexão e o componente COM usar a mesma conexão para acessar tabelas especificas do banco.

    Então se alguém souber como passar um objeto SQLConnection de um ambiente VB.Net para dentro de um componente COM compilado em /clr, ficaria muito agradecido.

    quarta-feira, 1 de novembro de 2006 13:14

Respostas

  •  

    Pessoal,

     

    Depois de muito bater cabeça descobri como passar uma conexão aberta no VB.Net usando ADO.NET para um componente compilado

    em modo gerenciavel. Abaixo segue um exemplo do que fiz :

     

    STDMETHODIMP Crui::put_connection_(VARIANT newVal)

    {

    // TODO: Add your implementation code here

    Object ^obj;

    NpgsqlConnection ^conn;

    NpgsqlCommand ^command;

    NpgsqlDataReader ^data;

    NpgsqlPolygon ^pol;

    NpgsqlPoint ^point;

    int uiCont;

    obj=System::Runtime::InteropServices::Marshal::GetObjectForNativeVariant (IntPtr(&newVal));

    conn=(NpgsqlConnection^)obj;

     

    command=gcnew NpgsqlCommand("Select * from polygons8 order by geom_id", conn);

    .

    .

    .

    ...........................

     

     

    []s

    Rui Mauricio

    quarta-feira, 8 de novembro de 2006 13:12