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(); } } } |