Artikel ini merangkum cara menyimpan gambar di SQL Server dan membaca serta menampilkannya di .Net WinForm dan .Net WebForm (asp.net).
1. Gunakan asp.net untuk mengunggah gambar dan menyimpannya di SQL Server, lalu membacanya dari SQL Server dan menampilkannya:
1) Unggah dan simpan ke SQL Server
Struktur basis data
membuat tabel tes
{
identitas(1,1),
Gambar gambar
}
Prosedur tersimpan terkait
Buat proses UpdateImage
(
@UpdateImage Gambar
)
Sebagai
Masukkan ke dalam nilai pengujian(FImage)(@UpdateImage)
PERGI
Tambahkan yang berikut ini ke file UpPhoto.aspx:
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
Kemudian tambahkan kode pemrosesan event klik pada tombol btnAdd di file di belakang kode UpPhoto.aspx.cs:
private void btnAdd_Click(pengirim objek, System.EventArgs e)
{
//Dapatkan gambar dan ubah gambar menjadi byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=Byte baru[upPhotoLength];
Aliran FotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Hubungkan ke basis data
SqlConnection samb=baru SqlConnection();
conn.ConnectionString="Sumber Data=localhost;Database=test;Id Pengguna=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",sambungan);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameter["@UpdateImage"].Value=PhotoArray;
//Jika Anda ingin menambahkan gambar tanpa menggunakan prosedur tersimpan, ubah empat baris kode di atas menjadi:
//string strSql="Masukkan ke dalam nilai pengujian(FImage)(@FImage)";
//SqlCommand cmd=SqlCommand baru(strSql,sambungan);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameter["@FImage"].Value=PhotoArray;
samb.Buka();
cmd.ExecuteNonQuery();
samb.Tutup();
}
2) Baca dari SQL Server dan tampilkan. Tambahkan kode berikut di mana gambar perlu ditampilkan:
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
Kode isi ShowPhoto.aspx:
private void Page_Load(pengirim objek, System.EventArgs e)
{
if(!Halaman.IsPostBack)
{
Sambungan SqlConnection=SqlConnection baru()
conn.ConnectionString="Sumber Data=localhost;Database=test;Id Pengguna=sa;Pwd=sa";
string strSql="pilih * dari pengujian di mana id=2";//Asumsikan di sini bahwa gambar dengan id 2 diperoleh
SqlCommand cmd=baru SqlCommand(strSql,sambungan);
samb.Buka();
SqlDataReader pembaca=cmd.ExecuteReader();
pembaca.Baca();
Response.ContentType="application/octet-stream";
Response.BinaryWrite((Byte[])reader["FIimage"]);
Respon.End();
pembaca.Tutup();
}
}
2. Simpan gambar ke SQL Server di WinForm, baca dari SQL Server dan tampilkan di kotak gambar
1), simpan di SQL Server
Struktur database dan prosedur tersimpan yang digunakan sama seperti di atas. Pertama, tambahkan kontrol OpenFileDialog ke formulir dan beri nama dSelectPic;
Kemudian, tambahkan tombol buka file pada formulir dan tambahkan kode event klik berikut:
Streaming ms;
byte[] picbyte;
//ofdSelectPic.ShowDialog();
jika (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//Kotak Pesan.Tampilkan("ok");
picbyte=byte baru[ms.Panjang];
ms.Posisi=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("Pembacaan selesai!");
//Hubungkan ke basis data
SqlConnection samb=baru SqlConnection();
conn.ConnectionString="Sumber Data=localhost;Database=test;Id Pengguna=sa;Pwd=sa";
SqlCommand cmd=new SqlCommand("UpdateImage",sambungan);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameter["@UpdateImage"].Nilai=picbyte;
samb.Buka();
cmd.ExecuteNonQuery();
samb.Tutup();
ms.Tutup();
}
}
2) Baca dan tampilkan di picturebox Pertama, tambahkan picturebox bernama ptbShow
Kemudian, tambahkan tombol dan tambahkan event respons berikut:
SqlConnection samb=baru SqlConnection();
conn.ConnectionString="Sumber Data=localhost;Database=test;Id Pengguna=sa;Pwd=sa";
string strSql="pilih FImage dari pengujian di mana id=1";
SqlCommand cmd=baru SqlCommand(strSql,sambungan);
samb.Buka();
SqlDataReader pembaca=cmd.ExecuteReader();
pembaca.Baca();
MemoryStream ms=new MemoryStream((byte[])reader["FImage"])
;
pembaca.Tutup();
samb.Tutup();
ptbShow.Gambar=gambar;
Alamat asli: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx