Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos, sou iniciante com desenvolvimento de aplicações com base Oracle.
Pesquisei sobre a variavel Blob, entendi sua função mas não sei como implementar ela em uma aplicação, como seria uma procedure insere algo num campo do tipo Blob.
obs: estou utilizando C# e Oracle.
até mais.
Qualquer tipo de arquivo.
No site do Imasters tem um artigo sobre isto na parte de Oracle.
poderia passar o nome do artgo pois são muitos artigos.
vlw
pessoal consegui fazer o insert e o select na base, o insert é igual ao do artigo que deixei o link, mas a extração ta ai.
Expliquei do meu jeito, caso alguem melhore o código ou tenha uma maneira mais eficaz para vazer isso, é só compartilhar o conhecimento. kkkkk
mas dessa forma ele ja funciona direto é só fazer a parada da conexão com o banco e ja era.
/// <summary>
/// Esse método extrai da base de dados um arquivo do campo Blob e faz a magica de transforma-lo em seu formato original,
/// mas com o nome que desejarmos. beleza
/// </summary>
/// <param name="strFileName">este parametro é o nome do arquivo que vai ser salvo</param>
/// <param name="strFileExtension"> é a extenção do arquivo que vai ser gerado doc, pdf, jpg e assim vai</param>
/// <param name="strPath">é o caminho onde vai ser gerado o documento ex: D:/meusTestes</param>
/// <param name="strSQL"> é a instrução sql que vai fazer o select no banco.</param>
/// <param name="cmdType">é o timpo de comando ex: CommandType.text ou CommandType.storedProcedure</param>
/// <param name="itColDataBlob">aqui vem o indice da coluna que o Blob esta ex: você tem um campo ID do tipo int e o campo blbFile do tipo blob, então deve passar o numero 1</param>
private void getImage(string strFileName,string strFileExtension,string strPath,string strSQL,CommandType cmdType,int itColDataBlob)
{
try
{
conecta();
long lngSize;
ora_command = new OracleCommand(strSQL, ora_connection);
ora_command.CommandType = cmdType;
ora_dataReader = ora_command.ExecuteReader(CommandBehavior.SequentialAccess);
FileStream fStream = new FileStream(strPath + strFileName + "." + strFileExtension.Replace(".", ""), FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter bWriter = new BinaryWriter(fStream);
if (ora_dataReader.Read())
{
byte[] bytBlob = new byte[Convert.ToInt32(ora_dataReader.GetBytes(itColDataBlob, 0, null, 0, 0))];
lngSize = ora_dataReader.GetBytes(0, 0, bytBlob, 0, Convert.ToInt32(ora_dataReader.GetBytes(0, 0, null, 0, 0)));
bWriter.Write(bytBlob);
bWriter.Flush();
bWriter.Close();
MessageBox.Show(" O arquivo " + strPath + strFileName + "." + strFileExtension.Replace(".", ""), "Extração", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Não foi possivel carregar o arquivo para o destino especificado", "Extração", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show("Erro ao carregar o arquivo " + "\n\n" + ex.Message.ToString());
}
}
E ai pessoal, desde que postei minha duvida fiz uma correria e achei dois artigos que me ajudaram muito.
para quem estiver sofrendo com isso ai vai os links.
manupulando um campo Blob do oracle com C#.
e esse com SQL
espero que ajude algumem esses artigos, assim que meu código funcionar direitinho posto ele aqui para não ter perda de tempo kkkkk.
**Mas com isso surgiu uma nova duvida, o campo Blob armazena outros arquivos como .doc, .pdf entre outros ou só imagem**
http://forum.imasters.com.br/public/style_emoticons/default/excl.gif