//把图片读到pictureBox,再写入数据库SqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("insert into fuser values ('1a','1b',@i)",conn);
byte[] ib=new Byte[60000];
FileStream fs=new FileStream(@"D:\windows temp\temp\1.jpg",FileMode.Open ,FileAccess.Read );
fs.Read(ib,0,60000);
cmd.Parameters.Add("@i",SqlDbType.Image,(int)fs.Length);
cmd.Parameters["@i"].Value=ib;
cmd.ExecuteNonQuery();
conn.Close();-------------------------------------------------------
//从数据库读图片到pictureboxSqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("select 照片 from fuser where password='1b'",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
conn.Open();
SqlCommand cmd=new SqlCommand("insert into fuser values ('1a','1b',@i)",conn);
byte[] ib=new Byte[60000];
FileStream fs=new FileStream(@"D:\windows temp\temp\1.jpg",FileMode.Open ,FileAccess.Read );
fs.Read(ib,0,60000);
cmd.Parameters.Add("@i",SqlDbType.Image,(int)fs.Length);
cmd.Parameters["@i"].Value=ib;
cmd.ExecuteNonQuery();
conn.Close();-------------------------------------------------------
//从数据库读图片到pictureboxSqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("select 照片 from fuser where password='1b'",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
解决方案 »
- .net winform 子窗体与父窗体的问题
- fck取值问题总是存入部分值, 大家帮帮忙
- 请教一个WebBrowser的问题
- 有关DataGrid分别绑定来自两个表中的数据?急!!
- 一个简单的c#问题!!~~~~~~~~~~~~~
- 用C#做一个HTTP代理,监视80端口的请求
- C#中有没有内建对Quoted-Printable编码转换的支持?
- 一个滚动条的问题?
- 高手们求教:如何自己画出ComboBox的边线和那个小三角?
- 初学MS C# Windows程序设计(Charles Petzold),找几个老师
- 急急急 C#怎么将unicode编码的字符串转换成GB2312编码的变量?
- 找不到Microsoft.Interop.Security.AzRoles在Win2000 Server!!!
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using System.IO;namespace FCXS.XMZL
{
/// <summary>
/// FrmPhoto 的摘要说明。
/// </summary>
public class FrmPhoto : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pbx;
private System.Windows.Forms.Splitter splitter1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public FrmPhoto()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FrmPhoto));
this.panel1 = new System.Windows.Forms.Panel();
this.pbx = new System.Windows.Forms.PictureBox();
this.splitter1 = new System.Windows.Forms.Splitter();
this.panel2 = new System.Windows.Forms.Panel();
this.button3 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.pbx);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(672, 408);
this.panel1.TabIndex = 0;
//
// pbx
//
this.pbx.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pbx.Dock = System.Windows.Forms.DockStyle.Fill;
this.pbx.Image = ((System.Drawing.Image)(resources.GetObject("pbx.Image")));
this.pbx.Location = new System.Drawing.Point(0, 0);
this.pbx.Name = "pbx";
this.pbx.Size = new System.Drawing.Size(672, 408);
this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pbx.TabIndex = 0;
this.pbx.TabStop = false;
//
// splitter1
//
this.splitter1.Dock = System.Windows.Forms.DockStyle.Top;
this.splitter1.Location = new System.Drawing.Point(0, 408);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(672, 3);
this.splitter1.TabIndex = 1;
this.splitter1.TabStop = false;
//
// panel2
//
this.panel2.Controls.Add(this.button3);
this.panel2.Controls.Add(this.button2);
this.panel2.Controls.Add(this.comboBox1);
this.panel2.Controls.Add(this.button1);
this.panel2.Controls.Add(this.label1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(0, 411);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(672, 58);
this.panel2.TabIndex = 2;
//
// button3
//
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.button3.Location = new System.Drawing.Point(499, 17);
this.button3.Name = "button3";
this.button3.TabIndex = 10;
this.button3.Text = "关闭";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button2
//
this.button2.Enabled = false;
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.button2.Location = new System.Drawing.Point(419, 17);
this.button2.Name = "button2";
this.button2.TabIndex = 9;
this.button2.Text = "保存";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// comboBox1
//
this.comboBox1.Items.AddRange(new object[] {
"正常",
"拉伸",
"自动",
"居中"});
this.comboBox1.Location = new System.Drawing.Point(283, 17);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(128, 20);
this.comboBox1.TabIndex = 7;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// button1
//
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.button1.Location = new System.Drawing.Point(99, 17);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(96, 23);
this.button1.TabIndex = 6;
this.button1.Text = "打开图片文件";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(203, 25);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(120, 16);
this.label1.TabIndex = 8;
this.label1.Text = "设置显示模式";
//
// FrmPhoto
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(672, 469);
this.ControlBox = false;
this.Controls.Add(this.panel2);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.panel1);
this.Name = "FrmPhoto";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "平面图";
this.Load += new System.EventHandler(this.FrmPhoto_Load);
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.ResumeLayout(false); }
#endregion /// <summary>
/// 打开图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
try
{
System.Windows.Forms.OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter ="位图文件(*.bmp)|*.bmp|jpg文件(*.jpg)|*.jpg|gif文件(*.gif)|*.gif|所有文件(*.*)|*.*";
ofd.FilterIndex =0;
if (ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK)
{
this.pbx.Image = Image.FromFile(ofd.FileName.ToString());
this.filename = ofd.FileName.ToString();
///保存按钮有效
this.button2.Enabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
try
{
switch (this.comboBox1.SelectedIndex)
{
case 0:
this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal;
break;
case 1:
this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
break;
case 2:
this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
break;
case 3:
this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
break;
default:
//this.pbx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal;
break;
}
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
// MessageBox.Show(this.comboBox1.SelectedText);
} /// <summary>
/// 退出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, System.EventArgs e)
{
this.Close();
} private string filename ="";
public string getsql ="";
public string updatesql ="update_xmzl_photo";
/// <summary>
/// 数据表名
/// </summary>
public string tbname ="xmzl";
public string bh ="";
public string bh2 ="";
/// <summary>
/// 加载图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmPhoto_Load(object sender, System.EventArgs e)
{
byte[] buffByte = null;
try
{
System.Data.OleDb.OleDbCommand mycmd = new System.Data.OleDb.OleDbCommand(getsql,DB.OleConn());
if (mycmd.Connection.State != System.Data.ConnectionState.Open)
{
mycmd.Connection.Open();
}
System.Data.OleDb.OleDbDataReader myrd = mycmd.ExecuteReader();
while (myrd.Read())
{
buffByte = ((byte[])myrd[0]);
}
myrd.Close();
mycmd.Connection.Close();
//将图像的字节数组放入内存流
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffByte);
//通过流对象建立Bitmap
System.Drawing.Bitmap bmp = new Bitmap(ms);
this.pbx.Image = bmp;// if (myrd.HasRows)
// {
// myrd.Read();
// if (System.NullReferenceException.Equals(myrd["image"],null))
// {
// return;
// }
// if (myrd["image"].ToString().Length ==0)
// {
// return;
// }
// System.IO.MemoryStream mstream = new System.IO.MemoryStream( (byte[]) myrd["image"],0,myrd["image"].ToString().Length);
// this.pbx.Image = Image.FromStream(mstream);
// mstream.Close();
// } }
catch (Exception ex)
{
MessageBox.Show(ex.Message+",图片不存在!");
}
} /// <summary>
/// 保存图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, System.EventArgs e)
{
try
{
System.IO.FileInfo fs = new System.IO.FileInfo(this.filename);
if (!fs.Exists)
{
MessageBox.Show("无效的文件名!");
return;
}
//创建一字节数组,用来存储图像文件.(数组的长度是图像文件的长度)
byte[] Content=new byte[fs.Length];
//打开文件并用他初始化一个文件流对象
FileStream ImageFileStream=fs.OpenRead();
//将文件内容写入字节数组
ImageFileStream.Read(Content,0,Content.Length);
//关闭文件流
ImageFileStream.Close(); //创建一个Sql命令对象,用来插入记录
System.Data.OleDb.OleDbCommand mycmd = new System.Data.OleDb.OleDbCommand(updatesql,DB.OleConn());
mycmd.CommandType = CommandType.StoredProcedure;
mycmd.Parameters.Add("@image",System.Data.OleDb.OleDbType.VarBinary);
mycmd.Parameters.Add("@bh",OleDbType.VarChar,20);
mycmd.Parameters.Add("@bh2",System.Data.OleDb.OleDbType.VarChar,20);
mycmd.Parameters.Add("@tbname",System.Data.OleDb.OleDbType.VarChar,50); mycmd.Parameters["@image"].Value = Content;
mycmd.Parameters["@bh"].Value =bh;
mycmd.Parameters["@bh2"].Value = bh2;
mycmd.Parameters["@tbname"].Value = tbname;
//打开数据库连接
if (mycmd.Connection.State!=ConnectionState.Open)
{
mycmd.Connection.Open();
}
//执行 Sql 语句
mycmd.ExecuteNonQuery();
//关闭数据库连接
mycmd.Connection.Close(); MessageBox.Show("图像文件 " + fs.FullName + " 成功上传到数据库!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
*功能:更新图片
*日期:20040719
*作者:李洪喜
*参数:@image 是图片,@bh 是编码 ,@bh2 附属编码 ,@tbname 是表名
*drop proc update_xmzl_photo
******************************************************************************************/
CREATE proc update_xmzl_photo
@image as image, ----图片
@bh as varchar(20), ---编号(主要) 值
@bh2 as varchar(20), ---次要编号 值
@tbname as varchar(40) ---要更新的表名
as
if (lower(@tbname) ='xmzl')
begin
update xmzl set xmzl_photo = @image where xmzl_bh =@bh
end
if (lower(@tbname)='lfmx')
begin
update lfmx set lfmx_photo = @image where lfmx_bh =@bh and lfmx_xmbh =@bh2
end
if (lower(@tbname) ='hxzl')
begin
update hxzl set hxzl_photo = @image where hxzl_bh = @bh and hxzl_xmbh = @bh2
end
if (lower(@tbname )='ggxm')
begin
update ggxm set ggxm_photo = @image where ggxm_bh = @bh
end
GO
{
int ImgSize;
string PicType;
Stream PicStream;
ImgSize=imagefile.PostedFile.ContentLength;
if(ImgSize>120000)
{
Response.Write("无法保存,文件大于12k");
}
else
{
PicType=imagefile.PostedFile.ContentType;
PicStream=imagefile.PostedFile.InputStream;
byte[] ImgContent=new byte[ImgSize];
int intStatus=PicStream.Read(ImgContent,0,ImgSize);
string connstr=ConfigurationSettings.AppSettings["connstring"];
SqlConnection connection = new SqlConnection(connstr);
SqlCommand command = new SqlCommand("INSERT INTO shopitem(thepic,itemtype) VALUES (@imgdata,@imgtype)", connection );
command.Parameters.Add("@imgdata",SqlDbType.Image);
command.Parameters["@imgdata"].Value=ImgContent;
command.Parameters.Add("@imgtype",SqlDbType.VarChar);
command.Parameters["@imgtype"].Value=PicType;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
Response.Write(ImgSize);
imagefile.Visible=false;
}
}