下面是 ACCESS 的示例,SQL Server 你需要调整一下。字段类型可以设置为
Binary(max) 或 image
/// <summary>
/// 将指定的图片信息存入到 Access 数据库
/// </summary>
/// <param name="fImageName">图片名</param>
/// <param name="fImageBinary">图片的 Byte</param>
public void InsertImageToAccess(String fImageName, Byte[] fImageBinary)
{
// Access 表
// 字段
// ImageName 文本
// ImageBinary OLE 对象
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\X.mdb")) {
OleDbCommand fInsertCommand = new OleDbCommand();
fInsertCommand.Connection = conn;
fInsertCommand.CommandText = "INSERT INTO Images (ImageName, ImageBinary) values (?, ?)";
fInsertCommand.Parameters.Add("@ImageName", OleDbType.VarChar).Value = fImageName;
fInsertCommand.Parameters.Add("@ImageBinary", OleDbType.Binary, fImageBinary.Length).Value = fImageBinary;
conn.Open();
fInsertCommand.ExecuteNonQuery();
}
}
/// <summary>
/// 获取指定图片名的 Byte
/// </summary>
/// <param name="fImageName">图片名</param>
/// <returns></returns>
public Byte[] GetImageFromAccess(String fImageName)
{
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\X.mdb")) {
OleDbCommand fSelectCommand = new OleDbCommand();
fSelectCommand.Connection = conn;
fSelectCommand.CommandText = "SELECT ImageBinary FROM Images WHERE ImageName = ?";
fSelectCommand.Parameters.Add("@ImageName", OleDbType.VarChar).Value = fImageName;
conn.Open();
object o = fSelectCommand.ExecuteScalar();
return (o == null ? null : (Byte[])o);
}
}
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog dialog = new OpenFileDialog()) {
dialog.Filter = "gif|*.gif";
dialog.Multiselect = false;
if (dialog.ShowDialog() == DialogResult.OK) {
string fImageName = Path.GetFileNameWithoutExtension(dialog.FileName);
FileStream fs = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] fInputImageBinary = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
// 保存到数据库
this.InsertImageToAccess(fImageName, fInputImageBinary);
// 从数据库获取图片并显示到 pictureBox1
Byte[] fOutputImageBinary = this.GetImageFromAccess(fImageName);
MemoryStream ms = new MemoryStream(fOutputImageBinary);
pictureBox1.Image = Image.FromStream(ms);
}
}
}
知识改变命运,奋斗成就人生!