Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Carmo

Buscar dados em bytes no banco

Recommended Posts

Bom dia

Pessoal com a ajuda aqui do fórum consegui armazenar um valor tipo byte[] no access deixando campo do access no formato Objeto OLE.

Sei que os dados estão armazenados corretamente porque quando faço uma busca no banco e retorno os dados para uma variável esta ok.

Porém agora tenho uma dúvida, vamos supor que meu sistema recebe uma variável do tipo byte[] e preciso fazer uma consulta no banco para saber se essa variável já esta armazenada. Como eu faria isso? Tentei jogando uma query simples mas não rolo, só para demonstrar segue como estou armazenando:

string strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=.\\banco.accdb";
            string sql = "INSERT INTO tabela(campo) VALUES (?)";
            OleDbConnection conexao = new OleDbConnection(strcon);
            OleDbCommand comando = new OleDbCommand(sql, conexao);

comando.Parameters.Add("@teste", OleDbType.Binary,variavel_byte.Length).Value = variavel_byte;

conexao.Open();
	            comando.ExecuteNonQuery();
	            conexao.Close();
                MessageBox.Show("salvo");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentando fazer a busca conforme modelo abaixo mas não retorna nada:

string strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=.\\banco.accdb";
              
                string query = "SELECT  * from tabela where campo=(?)" ;

                OleDbConnection conexao = new OleDbConnection(strcon);
                OleDbCommand cmdConsulta = new OleDbCommand(query, conexao);

                cmdConsulta.Parameters.Add("@dados", OleDbType.Binary).Value = (byte[])variavel_byte;
              

                conexao.Open();
                OleDbDataReader dr = null;

                dr = cmdConsulta.ExecuteReader();
             
                while (dr.Read())
                {
                    MessageBox.Show(dr.GetValue(0).ToString());
                }

 

Alguém tem ideia de como resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só está usando o método errado:

 

 

 

string strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=.\\banco.accdb";
              
                string query = "SELECT  * from tabela where campo=(?)" ;


                OleDbConnection conexao = new OleDbConnection(strcon);
                OleDbCommand cmdConsulta = new OleDbCommand(query, conexao);


                cmdConsulta.Parameters.Add("@dados", OleDbType.Binary).Value = (byte[])variavel_byte;
              


                conexao.Open();
                OleDbDataReader dr = null;


                dr = cmdConsulta.ExecuteReader();
             
                If (dr.hasrows()) {
//há um campo igual
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.