Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 2
            [id] => 422766
            [titulo] => gravar arquivos em *.pdf no BD e depois disponilizar para download... - C# WindownsFormApllication
            [dataCadastro] => DateTime Object
                (
                    [date] => 2012-08-28 17:17:47
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 290576
            [status] => A
            [isExample] => 
            [NomeUsuario] => Edson Mendes de Oliveira
            [Apelido] => 
            [Foto] => 05-4.JPG
            [Conteudo] => Acho que isso resolve seu problema

Escrevendo no banco de dados
[code]
StreamReader oStreamReader = new StreamReader(@"file.pdf");

byte[] buffer = new byte[oStreamReader.BaseStream.Length];

oStreamReader.BaseStream.Read(buffer, 0, buffer.Length);

oStreamReader.Close();
oStreamReader.Dispose();

SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "INSERT INTO tbArquivo(Arquivo) VALUES(@Arquivo);";
oSqlCommand.CommandType = CommandType.Text;

SqlParameter oSqlParameter = new SqlParameter();

oSqlParameter.ParameterName = "@Arquivo";
oSqlParameter.SqlDbType = SqlDbType.Image;
oSqlParameter.SourceColumn = "Arquivo";
oSqlParameter.Value = buffer;

oSqlCommand.Parameters.Add(oSqlParameter);

oSqlCommand.ExecuteNonQuery();

oSqlConnection.Close();
[/code]

Lendo do banco de dados
[code]
SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;";
oSqlCommand.CommandType = CommandType.Text;

SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader();

byte[] buffer = null;

if (oSqlDataReader.Read())
{
buffer = (byte[])oSqlDataReader.GetValue(0);
}

oSqlConnection.Close();

StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf");

oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length);

oStreamWriter.Close();
oStreamWriter.Dispose();
[/code] ) )

gravar arquivos em *.pdf no BD e depois disponilizar para download... - C# WindownsFormApllication

Elisangela Silva
   - 27 ago 2012

preciso criar um meio de gravar arquivos em *.pdf para serem importados para o banco e disponibilizados para os clientes efetuarem o download através de uma aplicação desktop(Windowns Form)
Estou tentando fazer mas so acho exemplos em .asp net, sera que é possivel fazer atraves do windowns form?
alguem tem alguma dica ?

Post mais votado

Edson Oliveira
   - 28 ago 2012

Acho que isso resolve seu problema

Escrevendo no banco de dados
#Código
StreamReader oStreamReader = new StreamReader(@"file.pdf");

byte[] buffer = new byte[oStreamReader.BaseStream.Length];

oStreamReader.BaseStream.Read(buffer, 0, buffer.Length);

oStreamReader.Close();
oStreamReader.Dispose();

SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "INSERT INTO tbArquivo(Arquivo) VALUES(@Arquivo);";
oSqlCommand.CommandType = CommandType.Text;

SqlParameter oSqlParameter = new SqlParameter();

oSqlParameter.ParameterName = "@Arquivo";
oSqlParameter.SqlDbType = SqlDbType.Image;
oSqlParameter.SourceColumn = "Arquivo";
oSqlParameter.Value = buffer;

oSqlCommand.Parameters.Add(oSqlParameter);

oSqlCommand.ExecuteNonQuery();

oSqlConnection.Close();


Lendo do banco de dados
#Código
SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;";
oSqlCommand.CommandType = CommandType.Text;

SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader();

byte[] buffer = null;

if (oSqlDataReader.Read())
{
buffer = (byte[])oSqlDataReader.GetValue(0);
}

oSqlConnection.Close();

StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf");

oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length);

oStreamWriter.Close();
oStreamWriter.Dispose();

Pjava
   - 27 ago 2012

Posso estar enganado, mas é uma gravação normal, como qualquer outro tipo de campo. Um simples insert. O que deve ser levado em consideração é o tipo no BD, que deve ser um tipo BLOB. Esse artigo pode te ser útil, acho.

http://www.macoratti.net/08/11/asp_blobs.htm

Elisangela Silva
   - 29 ago 2012


Citação:
Posso estar enganado, mas é uma gravação normal, como qualquer outro tipo de campo. Um simples insert. O que deve ser levado em consideração é o tipo no BD, que deve ser um tipo BLOB. Esse artigo pode te ser útil, acho.

http://www.macoratti.net/08/11/asp_blobs.htm


ok
Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida

Elisangela Silva
   - 29 ago 2012


Citação:
Acho que isso resolve seu problema

Escrevendo no banco de dados
#Código
StreamReader oStreamReader = new StreamReader(@"file.pdf");

byte[] buffer = new byte[oStreamReader.BaseStream.Length];

oStreamReader.BaseStream.Read(buffer, 0, buffer.Length);

oStreamReader.Close();
oStreamReader.Dispose();

SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "INSERT INTO tbArquivo(Arquivo) VALUES(@Arquivo);";
oSqlCommand.CommandType = CommandType.Text;

SqlParameter oSqlParameter = new SqlParameter();

oSqlParameter.ParameterName = "@Arquivo";
oSqlParameter.SqlDbType = SqlDbType.Image;
oSqlParameter.SourceColumn = "Arquivo";
oSqlParameter.Value = buffer;

oSqlCommand.Parameters.Add(oSqlParameter);

oSqlCommand.ExecuteNonQuery();

oSqlConnection.Close();


Lendo do banco de dados
#Código
SqlConnection oSqlConnection = new SqlConnection(@"connectionString");

oSqlConnection.Open();

SqlCommand oSqlCommand = new SqlCommand();

oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;";
oSqlCommand.CommandType = CommandType.Text;

SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader();

byte[] buffer = null;

if (oSqlDataReader.Read())
{
buffer = (byte[])oSqlDataReader.GetValue(0);
}

oSqlConnection.Close();

StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf");

oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length);

oStreamWriter.Close();
oStreamWriter.Dispose();

Ola Amigo Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida
Ao executar o codigo deu um pequenino erro sera que vc poderia me ajudar mais essa vez?
O erro acontece ao abrir o arquivo do bd:
da uma mensagem assim...
O Adobe Reader não põde abrir 'Copy_file.pdf' porque não ha suporte a esse
tipo de arquivo ou ele foi danificado(por exemplo, foi enviado como anexo de e mail
e não foi codificado corretamente)

Edson Oliveira
   - 29 ago 2012

Mas vc trocou esses pedaços de código.

file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.

Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.

Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?

Elisangela Silva
   - 29 ago 2012


Citação:
Mas vc trocou esses pedaços de código.

file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.

Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.

Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?


Ola mais uma vez agradeço a ajuda
Quanto ao codigo
em file.pdf eu coloquei a string lida atraves do fileDialog
String caminho = openFileDialog1.FileName;
StreamReader oStreamReader = new StreamReader(caminho);

Quanto salvar o arquivo eu coloquei
StreamWriter oStreamWriter = new StreamWriter(@"C:\Users\Particular\Desktop\Copy_file.pdf");

Elisangela

Elisangela Silva
   - 29 ago 2012


Citação:
Mas vc trocou esses pedaços de código.

file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.

Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.

Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?


Problrma resolvido

O codigo que vc postou ta coretissimo o meu arquivo pdf que tava corrompido,
dai eu resolvi fazer o teste com outros arquivos pdf e ai sim deu certo

Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida.

Edson Oliveira
   - 29 ago 2012

De nada.

Até mais