.Net控件Atalasoft 具有流媒体功能,可与ADO.NET共同使用以直接读取数据库中的图像,无需保存至临时文件。下面代码片段演示了如何利用C#和VB.NET从数据库中读写图像。
写入数据库:
C#
private void SaveToSqlDatabase(AtalaImage image){SqlConnection myConnection = null;try{// Save image to byte array.byte[] imagedata = image.ToByteArray(new Atalasoft.Imaging.Codec.JpegEncoder(75));// Create the SQL statement to add the image data.myConnection = new SqlConnection(CONNECTION_STRING);SqlCommand myCommand = new SqlCommand("INSERT INTO Atalasoft_Image_Database (Caption, ImageData) VALUES ('" + txtCaption.Text + "', @Image)", myConnection);SqlParameter myParameter = new SqlParameter("@Image", SqlDbType.Image, imagedata.Length);myParameter.Value = imagedata;myCommand.Parameters.Add(myParameter);// Open the connection and execture the statement.myConnection.Open();myCommand.ExecuteNonQuery();}finally{myConnection.Close();}}
Visual Basic.NET
Private Sub SaveToSqlDatabase(ByVal image As AtalaImage)Dim myConnection As SqlConnection = NothingTry' Save image to byte array.Dim imagedata() As Byte = image.ToByteArray(New Atalasoft.Imaging.Codec.JpegEncoder(75))' Create the SQL statement to add the image data.myConnection = New SqlConnection(CONNECTION_STRING)Dim myCommand As SqlCommand = New SqlCommand("INSERT INTO Atalasoft_Image_Database (Caption, ImageData) VALUES ('" + txtCaption.Text + "', @Image)", myConnection)Dim myParameter As SqlParameter = New SqlParameter("@Image", SqlDbType.Image, imagedata.Length)myParameter.Value = imagedatamyCommand.Parameters.Add(myParameter)' Open the connection and execture the statement.myConnection.Open()myCommand.ExecuteNonQuery()FinallymyConnection.Close()End TryEnd Sub
从数据库中读取:
C#
private AtalaImage OpenFromSqlDatabase(){SqlConnection myConnection = null;try{// Establish connection and SELECT statement.myConnection = new SqlConnection(CONNECTION_STRING);SqlCommand myCommand = new SqlCommand("SELECT ImageData FROM Atalasoft_Image_Database WHERE Caption = '" + txtCaption.Text + "'", myConnection);myConnection.Open();// Get the image from the database.byte[] imagedata = (byte[])myCommand.ExecuteScalar();if (imagedata != null){AtalaImage image = AtalaImage.FromByteArray(imagedata);return image;}else{MessageBox.Show("Image does not exist in database.");return null;}}finally{myConnection.Close();}}
Visual Basic .NET
Private Function OpenFromSqlDatabase() As AtalaImageDim myConnection As SqlConnection = NothingTry' Establish connection and SELECT statement.myConnection = New SqlConnection(CONNECTION_STRING)Dim myCommand As SqlCommand = New SqlCommand("SELECT ImageData FROM Atalasoft_Image_Database WHERE Caption = '" + txtCaption.Text + "'", myConnection)myConnection.Open()' Get the image from the database.Dim imagedata() As Byte = CType(myCommand.ExecuteScalar(), Byte())If (Not imagedata Is Nothing) ThenDim image As AtalaImage = AtalaImage.FromByteArray(imagedata)Return imageElseMessageBox.Show("Image does not exist in database.")Return NothingEnd IfFinallymyConnection.Close()End TryEnd Function