I have created a form that will upload an image to an sql server
the data stored in the database will be:
pictureTitle
PictureDescription
PictureOwner
pictureData
each time i try and insert the information into the database the following error occures
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in system.data.dll
Additional information: An SqlParameter with ParameterName '@pictureTitle' is not contained by this SqlParameterCollection.
Here is my code.. can u notice the problem please help..
Code:Imports System.IO Imports System.Data.SqlClient Public FileName As String Public PictureTitle As String Public PictureDescription As String Public PictureOwner As String = System.Environment.UserNameCode:Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Dim opendialog As New OpenFileDialog opendialog.DefaultExt = "*.jpg" opendialog.Filter = "Picture files(*.jpg)|*.jpg|Picture files_ (*.jpeg)|*.jpeg|Picture files (*.gif)|*.gif " If (opendialog.ShowDialog() = DialogResult.OK) Then Me.PictureBox1.Image = New Bitmap(opendialog.FileName) FileName = opendialog.FileName End If PictureTitle = Path.GetFileName(opendialog.FileName) TextBox1.Text = PictureTitle End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click SqlConnection1.Open() Dim myCommand As New SqlCommand("Insert INTO Pictures(pictureTitle, pictureDescription, pictureOwner, pictureData) values(@pictureTitle, @pitureDescription, @pictureOwner, @pictureData)", SqlConnection1) 'Read jpg into file stream, and from there into Byte array. Dim myFileStream As New FileStream(FileName, FileMode.Open, FileAccess.Read) Dim arrayOfBytes(myFileStream.Length) As [Byte] myFileStream.Read(arrayOfBytes, 0, arrayOfBytes.Length) myFileStream.Close() 'Copy entered values into parameters myCommand.Parameters("@pictureTitle").Value = PictureTitle myCommand.Parameters("@pictureDescription").Value = PictureDescription myCommand.Parameters("@pictureOwner").Value = PictureOwner Dim myParameter As New SqlParameter("@pictureData", SqlDbType.VarBinary, arrayOfBytes.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, arrayOfBytes) myCommand.Parameters.Add(myParameter) 'Create variable for returned value from SQL execution Dim SQLreturn As Integer 'Protect against problems using a Try...Catch block Try 'Execute the command SQLreturn = myCommand.ExecuteNonQuery() Catch ex As Exception MessageBox.Show(ex.Message) End Try 'Report back results If SQLreturn <> 1 Then MessageBox.Show("Could not execute the INSERT query") Else MessageBox.Show("INSERT completed successfully") End If SqlConnection1.Close()




Reply With Quote