Este artigo resume como armazenar imagens no SQL Server e lê-las e exibi-las em .Net WinForm e .Net WebForm (asp.net).
1. Use asp.net para fazer upload da imagem e armazená-la no SQL Server, depois leia-a no SQL Server e exiba-a:
1) Carregue e salve no SQL Server
Estrutura do banco de dados
criar teste de tabela
{
identidade(1,1),
Imagem da imagem
}
Procedimentos armazenados relacionados
Criar processo UpdateImage
(
Imagem @UpdateImage
)
Como
Inserir em valores de teste (FImage) (@UpdateImage)
IR
Adicione o seguinte ao arquivo UpPhoto.aspx:
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
Em seguida, adicione o código de processamento de evento de clique do botão btnAdd no arquivo code-behind UpPhoto.aspx.cs:
private void btnAdd_Click (remetente do objeto, System.EventArgs e)
{
//Obtém a imagem e converte a imagem em byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=novo Byte[upPhotoLength];
Fluxo PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Conecta ao banco de dados
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Fonte de dados=localhost;Banco de dados=teste;ID do usuário=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//Se você quiser adicionar imagens sem usar procedimentos armazenados, altere as quatro linhas de código acima para:
//string strSql="Inserir em valores de teste(FImage)(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
conexão.Open();
cmd.ExecuteNonQuery();
conexão.Fechar();
}
2) Leia do SQL Server e exiba-o. Adicione o seguinte código onde a imagem precisa ser exibida:
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
Código do corpo ShowPhoto.aspx:
private void Page_Load (remetente do objeto, System.EventArgs e)
{
if(!Page.IsPostBack)
{
Conexão SqlConnection=nova SqlConnection()
conn.ConnectionString="Fonte de dados=localhost;Banco de dados=teste;ID do usuário=sa;Pwd=sa";
string strSql="select * from test where id=2";//Suponha aqui que a imagem com id 2 é obtida
SqlCommand cmd=new SqlCommand(strSql,conn);
conexão.Open();
Leitor SqlDataReader=cmd.ExecuteReader();
leitor.Leitura();
Response.ContentType="aplicativo/octeto-stream";
Response.BinaryWrite((Byte[])leitor["FImage"]);
Response.End();
leitor.Fechar();
}
}
2. Salve a imagem no SQL Server no WinForm, leia-a no SQL Server e exiba-a no picturebox
1), armazene no SQL Server
A estrutura do banco de dados e os procedimentos armazenados usados são os mesmos acima. Primeiro, adicione um controle OpenFileDialog ao formulário e nomeie-o como dSelectPic;
Em seguida, adicione um botão de abertura de arquivo no formulário e adicione o seguinte código de evento de clique:
Transmitir ms;
byte[] picbyte;
//ofdSelectPic.ShowDialog();
if (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=nulo)
{
//MessageBox.Show("ok");
picbyte=novo byte[ms.Comprimento];
ms.Posição=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("Leitura concluída!");
//Conecta ao banco de dados
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Fonte de dados=localhost;Banco de dados=teste;ID do usuário=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
conexão.Open();
cmd.ExecuteNonQuery();
conexão.Fechar();
ms.Fechar();
}
}
2) Ler e exibir no picturebox Primeiro, adicione um picturebox chamado ptbShow
Em seguida, adicione um botão e adicione o seguinte evento de resposta:
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Fonte de dados=localhost;Banco de dados=teste;ID do usuário=sa;Pwd=sa";
string strSql="selecione FImage do teste onde id=1";
SqlCommand cmd=new SqlCommand(strSql,conn);
conexão.Open();
Leitor SqlDataReader=cmd.ExecuteReader();
leitor.Leitura();
MemoryStream ms=new MemoryStream((byte[])leitor["FImage"])
;
leitor.Fechar();
conexão.Fechar();
ptbShow.Image=imagem;
Endereço original: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx