การบันทึก Image File ลงไปเก็บไว้ใน Database
โค้ดต่อไปนี้เป็นคำสั่งในการบันทึกข้อมูลชนิด Image File to Database
โค้ดต่อไปนี้เป็นคำสั่งในการบันทึกข้อมูลชนิด Image File to Database
อันดับแรกดูตัวอย่างโครงสร้างข้อมูลที่ผมใช้ก่อนใน SQL SERVER EXPRESSS 2008
1 2 3 4 5 6 7 8 9 | CREATE TABLE [dbo].[menuimages]( [Code] [varchar](10) NOT NULL, [ImageFile] [image] NULL, [ImageName] [nvarchar](150) NULL, CONSTRAINT [PK_menuimages] PRIMARY KEY CLUSTERED ( [Code] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] |
ลำดับต่อมาเป็นโค้ดที่ใช้บันทึกข้อมูลครับตามตัวอย่างด้านล่าง
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | string sql = "" ; string connectionString = ConfigurationManager.ConnectionStrings[ "hayeConnectionString" ].ConnectionString; SqlConnection connection = new SqlConnection(connectionString); try { FileStream fs; fs = new FileStream(@imagename, FileMode.Open, FileAccess.Read); //a byte array to read the image byte[] picbyte = new byte[fs.Length]; fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length)); fs.Close(); //Select Data First sql = "Select * From menuimages Where code=@Code" ; SqlCommand command = new SqlCommand(sql, connection); command.CommandType = CommandType.Text; command.CommandType = CommandType.Text; SqlParameter param0 = new SqlParameter( "@Code" , SqlDbType.VarChar, 10); param0.Value = textBox7.Text; command.Parameters.Add(param0); connection.Open(); SqlDataReader read = command.ExecuteReader(); if (read.HasRows) { imagename = "C:/Temp/" + textBox7.Text + ".jpg" ; if (System.IO.File.Exists(@imagename)) { System.IO.File.Delete(@imagename); } sql = "Update menuimages SET ImageFile=@ImageFile, ImageName=@ImageName Where code=@Code" ; } else { sql = "INSERT INTO menuimages(code,ImageFile, ImageName) VALUES ( @Code, @ImageFile, @ImageName)" ; } read.Close(); SqlCommand command2 = new SqlCommand(sql, connection); command2.CommandType = CommandType.Text; SqlParameter param01 = new SqlParameter( "@Code" , SqlDbType.VarChar, 10); param01.Value = textBox7.Text; command2.Parameters.Add(param01); SqlParameter param1 = new SqlParameter( "@ImageFile" , SqlDbType.Image); param1.Value = picbyte; command2.Parameters.Add(param1); command2.Parameters.Add( "@ImageName" , SqlDbType.NVarChar, 150).Value = filename; int numRowsAffected = command2.ExecuteNonQuery(); //Refresh Bitmap newimg = new Bitmap(filename); Program.frmshowpic.pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; Program.frmshowpic.pictureBox1.Image = (Image)newimg; pictureBox1.Image = null; MessageBox.Show( "Insert new picture completed..." ); } catch (System.ArgumentException ae) { MessageBox.Show(ae.Message.ToString()); } finally { connection.Close(); } |
จากตัวอย่างจะมีโค้ดส่วนเกินมาหลายบรรทัดนะครับ แต่ไม่ลบให้เพราะ พนง.ที่ออฟฟิตอาจจำเป็นต้องเข้ามาดูบทความเหล่านี้อยู่บ้างและผมก็เอาไว้ใช้อ้างอิงในตัวอย่างกรณีจำไม่ได้เพราะในเว็บหาง่ายกว่าโค้ดในคอมพิวเตอร์
No comments:
Post a Comment