Image To SQL Server
来源:互联网 发布:阿尔法淘宝宝贝下载器 编辑:程序博客网 时间:2024/05/16 09:52
/*
use master
go
if DB_ID('UserImage') is not null
drop database UserImage
create database UserImage
go
use UserImage
go
create table Images
(
Image_Name nvarchar(255) primary key,
Image_Data Image not null
)
go
create proc InsertImage
(
@Image_Name nvarchar(255),
@Image_Data Image
)
as
insert into Images values(@Image_Name, @Image_Data)
go
create proc DeleteImage
(
@Image_Name nvarchar(255)
)
as
delete from Images where Image_Name = @Image_Name
go
create proc SelectImage
(
@Image_Name nvarchar(255)
)
as
select Image_Data from Images where Image_Name = @Image_Name
go
*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace ImageDB
{
public partial class FormImageSQL : Form
{
#region
private SqlConnection sql;
private DataTable table;
#endregion
public FormImageSQL()
{
#region
InitializeComponent();
openFileImage.Filter = "图像文件|*.bmp;*.gif;*.jpg;*.jpeg;*.png|所有文件|*.*";
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; // 图像大小按其原有的大小比例被增加或减小。
table = new DataTable();
DataColumn column = table.Columns.Add("Name", typeof(String));
table.Columns.Add("Image", typeof(Image));
table.Constraints.Add("PK", column, true);
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = Environment.MachineName; // @"./SQLEXPRESS"
builder.InitialCatalog = "UserImage";
builder.IntegratedSecurity = true;
builder.TypeSystemVersion = "SQL Server 2000";
sql = new SqlConnection(builder.ConnectionString);
try
{
if (sql.State == ConnectionState.Closed)
sql.Open();
using (SqlCommand cmd = new SqlCommand("Select * from Images", sql))
using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
int name = sdr.GetOrdinal("Image_Name");
int img = sdr.GetOrdinal("Image_Data");
while (sdr.Read())
{
using (Stream ms = sdr.GetSqlBytes(img).Stream)
{
table.Rows.Add(sdr.GetString(name), new Bitmap(ms));
ms.Flush();
}
}
}
}
catch (Exception se)
{
if (sql.State == ConnectionState.Open)
sql.Close();
MessageBox.Show(this, se.Message);
}
comboBoxImage.DrawMode = DrawMode.OwnerDrawFixed; // 编码绘制所有元素,并且元素大小都相等。
comboBoxImage.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoxImage.Sorted = false; // 绑定数据时,禁用排序。
comboBoxImage.ValueMember = "Image"; // 绑定数据之前赋值。
comboBoxImage.DataSource = table;
comboBoxImage.DisplayMember = "Name";
buttonDelete.Enabled = (table.Rows.Count > 0);
#endregion
}
#region AddImage
private void buttonAdd_Click(object sender, EventArgs e)
{
if (openFileImage.ShowDialog(this) != DialogResult.OK)
return;
string name = openFileImage.SafeFileName;
if (table.Rows.Contains(name))
{
MessageBox.Show(this, string.Format("图像名称“{0}”已存在!", name), "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
using (SqlCommand cmd = new SqlCommand("InsertImage", sql))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Image_Name", SqlDbType.NVarChar, name.Length).Value = name;
byte[] bytes = File.ReadAllBytes(openFileImage.FileName);
cmd.Parameters.Add("@Image_Data", SqlDbType.Image, bytes.Length).SqlValue = bytes;
if (sql.State == ConnectionState.Closed)
sql.Open();
cmd.ExecuteNonQuery();
DataRow row = table.NewRow();
row.SetField<String>("Name", name);
row.SetField<Image>("Image", new Bitmap(openFileImage.FileName));
table.Rows.Add(row);
comboBoxImage.SelectedIndex = comboBoxImage.Items.Count - 1;
buttonDelete.Enabled = true;
}
}
catch (Exception se)
{
MessageBox.Show(this, se.Message);
}
finally
{
if (sql.State == ConnectionState.Open)
sql.Close();
}
}
#endregion
#region DeleteImage
private void buttonDelete_Click(object sender, EventArgs e)
{
try
{
string name = comboBoxImage.Text;
if (MessageBox.Show(this, string.Format("确实要删除图像“{0}”吗?", name), "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
using (SqlCommand cmd = new SqlCommand("DeleteImage", sql))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Image_Name", SqlDbType.NVarChar, name.Length).Value = name;
if (sql.State == ConnectionState.Closed)
sql.Open();
cmd.ExecuteNonQuery();
table.Rows.RemoveAt(comboBoxImage.SelectedIndex);
buttonDelete.Enabled = (table.Rows.Count > 0);
}
}
catch (Exception se)
{
MessageBox.Show(this, se.Message);
}
finally
{
if (sql.State == ConnectionState.Open)
sql.Close();
}
}
#endregion
#region SelectImage
private void comboBoxImage_SelectedIndexChanged(object sender, EventArgs e)
{
pictureBox1.Image = comboBoxImage.SelectedValue as Image;
}
private void comboBoxImage_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
return;
using (Graphics g = e.Graphics)
using (SolidBrush newBrush = new SolidBrush(e.BackColor))
{
if ((e.State & DrawItemState.Selected) != 0) // 取交集。
newBrush.Color = Color.Cyan;
Rectangle newClip = e.Bounds;
g.FillRectangle(newBrush, newClip);
newClip.Offset(1, 1);
newClip.Width = 36;
newClip.Height -= 3;
g.DrawRectangle(Pens.Black, newClip);
newClip.Offset(1, 1);
newClip.Width -= 1;
newClip.Height -= 1;
DataRow row = table.Rows[e.Index];
g.DrawImage(row.Field<Image>("Image"), newClip);
newBrush.Color = e.ForeColor;
g.DrawString(row.Field<String>("Name"), e.Font, newBrush, newClip.X + 72, newClip.Y);
}
}
#endregion
}
}
- Image To SQL Server
- sql server image type
- using pyodbc on ubuntu to insert a image field on SQL Server
- csv to sql server
- Sql Server 2000 Image数据读取示例
- Save image in SQL Server (delphi)
- SQL Server中的Image数据类型的操作
- MS Sql Server存储image、text、ntext
- SQL Server 2005 Image数据类型的使用
- SQL Server中的Image数据类型的操作
- SQL Server 2005里的Image处理
- SQL Server 对 Image字段进行操作
- SQL Server中的Image数据类型的操作
- SQL Server中的Image数据类型的操作
- SQL Server中的Image数据类型的操作
- python读写 sql server image字段
- SQL Server中的Image数据类型的操作
- SQL Server中IMAGE类型转字符串
- Image To Access
- 常用JDBC连接数据库方法
- MyEclipse 快捷键
- 转载我老婆写的当性别遇到就业
- JSP页面层的经验备忘总结
- Image To SQL Server
- C++常用类型转换
- 线段树入门 POJ 2182 Lots Cows
- ClipImage
- 倒霉的牧羊人
- Eclipse快捷键
- Hibernate(2)批量更新
- 一些计算机技术术语的缩写
- C# 资源文件的使用