数据库字段简化为二个:imgtitle和imgdata。
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Data.SqlClient; namespace WindowsApplication21 { /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; private string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;Data Source=localhost;"; private SqlConnection conn = null; private SqlCommand cmd = null; private System.Windows.Forms.Button button2; private System.Windows.Forms.PictureBox pic1; private System.Windows.Forms.OpenFileDialog openFileDialog1; private string sql = null; private System.Windows.Forms.Label label2; private string nowId=null; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); conn = new SqlConnection(ConnectionString); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if (conn.State == ConnectionState.Open) conn.Close(); if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.pic1 = new System.Windows.Forms.PictureBox(); this.button2 = new System.Windows.Forms.Button(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.label2 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(0, 40); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(264, 48); this.button1.TabIndex = 0; this.button1.Text = "加入新的图片"; this.button1.Click += new System.EventHandler(this.button1_Click); // // pic1 // this.pic1.Location = new System.Drawing.Point(280, 8); this.pic1.Name = "pic1"; this.pic1.Size = new System.Drawing.Size(344, 264); this.pic1.TabIndex = 3; this.pic1.TabStop = false; // // button2 // this.button2.Location = new System.Drawing.Point(0, 104); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(264, 40); this.button2.TabIndex = 4; this.button2.Text = "从数据库中恢复图像"; this.button2.Click += new System.EventHandler(this.button2_Click); // // openFileDialog1 // this.openFileDialog1.Filter = "\"图像文件(*.jpg,*.bmp,*.gif)|*.jpg|*.bmp|*.gif\""; // // label2 // this.label2.Location = new System.Drawing.Point(0, 152); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(264, 48); this.label2.TabIndex = 5; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(632, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.label2, this.button2, this.pic1, this.button1}); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { openFileDialog1.ShowDialog (); if (openFileDialog1.FileName.Trim()!="") { FileInfo fi = new FileInfo(openFileDialog1.FileName); string imgtitle=openFileDialog1.FileName; int imgdatalen=(int)fi.Length; byte[] imgdata = new byte[imgdatalen]; Stream imgdatastream=fi.OpenRead(); int n=imgdatastream.Read(imgdata,0,imgdatalen); if( conn.State == ConnectionState.Open) conn.Close(); ConnectionString ="Integrated Security=SSPI;" + "Initial Catalog=mydb;" +"Data Source=localhost;"; conn.ConnectionString = ConnectionString; try { string mySelectQuery = "INSERT INTO ImageStore(imgtitle,imgdata) VALUES (@imgtitle, @imgdata )"; //string mySelectQuery="UPDATE ImageStore set imgtitle=@imgtitle,imgdata=@imgdata" ; SqlCommand myCommand = new SqlCommand(mySelectQuery, conn); SqlParameter paramTitle = new SqlParameter("@imgtitle", SqlDbType.VarChar,50 ); paramTitle.Value = imgtitle; myCommand.Parameters.Add( paramTitle); SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image ); paramData.Value = imgdata; myCommand.Parameters.Add( paramData ); conn.Open(); int numRowsAffected = myCommand.ExecuteNonQuery(); conn.Close(); } catch(Exception err) { MessageBox.Show("您输入名称可能在数据库中已存在或输入为空,请检查!"+err.ToString() ); } finally {} } } private void Form1_Load(object sender, System.EventArgs e) { } private void button2_Click(object sender, System.EventArgs e) { //打开数据库连接 if( conn.State == ConnectionState.Open) conn.Close(); ConnectionString ="Integrated Security=SSPI;" + "Initial Catalog=mydb;" +"Data Source=localhost;"; conn.ConnectionString = ConnectionString; // 创建数据适配器 string sql="SELECT * FROM ImageStore" ; SqlCommand command = new SqlCommand(sql, conn); try {conn.Open();} catch(Exception newerr) { MessageBox.Show(" 不能打开数据联接!") ; } finally {} SqlDataReader dr = command.ExecuteReader(); if(dr.Read()) { FileInfo fi = new FileInfo("temp"); FileStream myStream=fi.Open(FileMode.Create); byte[] mydata=((byte[])dr["imgdata"]); //label2.Text="您现在看到的是:"+ dr["imgtitle"].ToString(); foreach(byte a in mydata) { myStream.WriteByte(a); } myStream.Close(); Image myImage=Image.FromFile("temp") ; pic1.Image=myImage; pic1.Refresh(); dr.Close (); } else { MessageBox.Show("没有成功读入数据!") ; } conn.Close(); } } } |