|
该例子是一个对SQL Server数据类型的一个操作例子,具有写入、读取功能。
1:准备数据库
1)创建数据库 Test
2)创建表 Table_1 (分别有2个字段:id(Int)、photo(Image))
如图:
2:用C#进行读写操作,完整代码如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;namespace imageTest{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btn_brewse_Click(object sender, EventArgs e){OpenFileDialog op = new OpenFileDialog();op.Title = "浏览图像文件";op.Filter = "图像文件(*.jpg)|*.jpg";op.ShowDialog();txt_ImageAddress.Text = op.FileName;}private void btn_Insert_Click(object sender, EventArgs e){FileStream fs = new FileStream(txt_ImageAddress.Text,FileMode.Open,FileAccess.Read);byte[] byteArray = new byte[fs.Length];fs.Read(byteArray,0,Convert.ToInt32(fs.Length));fs.Close();string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";SqlConnection conn = new SqlConnection(connectionStr);conn.Open();SqlCommand cmd = new SqlCommand("INSERT INTO Table_1(photo) VALUES(@photo)",conn);SqlParameter parmeter = new SqlParameter("@photo", SqlDbType.Image);parmeter.Value = byteArray;cmd.Parameters.Add(parmeter);int result = cmd.ExecuteNonQuery();if (result > 0)MessageBox.Show("插入成功");conn.Close();}private void btn_ReadImage_Click(object sender, EventArgs e){string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";SqlConnection conn = new SqlConnection(connectionStr);conn.Open();SqlCommand cmd = new SqlCommand("SELECT * FROM Table_1",conn);SqlDataReader dr = cmd.ExecuteReader();dr.Read();byte[] image = (byte[])dr["photo"];conn.Close();if (image.Length == 0)return;string photoUrl = Environment.CurrentDirectory + "\\1.jpg";FileStream fs = new FileStream(photoUrl, FileMode.OpenOrCreate, FileAccess.Write);BinaryWriter bw = new BinaryWriter(fs);bw.BaseStream.Write(image, 0, image.Length);bw.Flush();bw.Close();picbox_image.ImageLocation = photoUrl;}}}
效果如图:
完整项目(包含数据库文件)下载地址:http://download.csdn.net/source/3576866
也可以留下Email,我会第一时间发给你。 |
|
|