Às vezes, imagens ou arquivos devem ser armazenados no banco de dados devido a certas necessidades (como segurança). É claro que, em geral, especialmente quando os arquivos são relativamente grandes, muitas pessoas não defendem o armazenamento de arquivos em formato binário no banco de dados Oracle. O acesso aos arquivos no arquivo é organizado da seguinte forma (a ideia é a mesma do acesso no SQL Server2000. Ao armazenar, o fluxo de bytes binários da imagem ou arquivo é armazenado nos dados. Ao ler, o campo correspondente no banco de dados é lido nos dados de byte e, em seguida, gerado):
1. Crie uma tabela de banco de dados no TOAD ou SQLPlus.
1CRIAR TABELA TEST_TABLE
2(
3 ID VARCHAR2 (36 BYTES),
4 NOME VARCHAR2 (50 BYTE),
5 BLOB DE FOTOS
6)
7
2. Crie uma nova página ASPX, coloque um controle FileUpload na página, nomeie-o como fileUp e coloque dois botões chamados btnSave (salvar) e btnRead (ler).
3. Execute o seguinte código no evento btnSave para salvar imagens ou arquivos:
Salvar imagens (arquivos) no Oracle
1StringBuilder sbSQL = new StringBuilder("inserir em Test_Table(ID,Nome,Foto) valores(:ID,:Nome,:Foto)");
2 OracleConnection cn = new OracleConnection(strCn);
3 OracleCommand cmd = cn.CreateCommand();
4 cmd.CommandText = sbSQL.ToString();
5 cmd.Parameters.Add(":ID", OracleType.VarChar, 36).Value = Guid.NewGuid().ToString();
6 cmd.Parameters.Add(":Nome", OracleType.VarChar, 50).Value = fileUp.FileName ;
7 int intLen = fileUp.PostedFile.ContentLength;
8 bytes[] foto = novo byte[intLen];
9 fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
10 cmd.Parameters.Add(":Foto", OracleType.Blob).Value = pic;
11 tentativas
12 {
13cn.Open();
14cmd.ExecuteNonQuery();
15}
16 captura (exceção ex)
17 {
18 Response.Write(ex.Mensagem);
19}
20 finalmente
vinte e um {
22cn.Fechar();
vinte e três }
24
4. O método de leitura é o seguinte:
Leia imagens (arquivos) do Oracle
1OracleConnection cn = new OracleConnection(strCn);
2OracleCommand cmd = cn.CreateCommand();
3cmd.CommandText = "selecionar foto da test_table";
4tente
5{
6cn.Open();
7 Fluxo MemoryStream = new MemoryStream();
8 Leitor IDataReader = cmd.ExecuteReader();
9 se (leitor.Read())
10 {
11 byte[] pic = (byte[])leitor[0];
12 //byte[] pic = (byte[])cmd.ExecuteScalar();
13 stream.Write(pic, 0, pic.Length);
14 //Bitmap bitMap = new Bitmap(stream);
15 //Response.ContentType = "imagem/Jpeg";
16 //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17 //A parte de comentários pode exibir a imagem no IE em vez de baixá-la.
18 //O método a seguir baixa o arquivo diretamente
19 Response.ContentType = "aplicativo/fluxo de octetos";
20 Response.AddHeader("Disposição de Conteúdo", "anexo;NomeArquivo= demo.JPG");
21 Response.BinaryWrite(foto);
22 Response.End();
vinte e três }
vinte e quatro
25}
26catch (Exceção ex)
27{
28 Response.Write(ex.Mensagem);
29}
30finalmente
31{
32 cn.Fechar();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html