2014-09-21 3 views
-1

Я хочу обновить изображения в базе данных, но когда я нажимаю кнопку, он не будет обновляться, у меня нет ошибок в моем коде. Я добавил код в блоке «com.executequery», чтобы попробовать, если я получаю ошибки, и я получаю MessageBox результат «Ошибка»Обновление изображения в базе данных MSAccess Database Vb.net?

Private Sub updatebtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles updatebtn.Click 
      If Agetxt.SelectedItem = Nothing Or gendertxt.SelectedItem = Nothing Or Yrlvltxt.SelectedItem = Nothing Or PictureBox1.Image Is Nothing Then 

       MsgBox("Please do not leave required fields blanks.", vbExclamation, "Warning!") 
      Else 
       Dim memstream As New MemoryStream 
       Dim datapic_update As Byte() 
       Me.PictureBox1.Image.Save(memstream, Imaging.ImageFormat.Jpeg) 
       datapic_update = memstream.GetBuffer() 
       memstream.Read(datapic_update, 0, memstream.Length) 

'to check if connection is open 
       If con.State = ConnectionState.Open Then 
        con.Close() 
       End If 

       'Updating DB 
       Dim editQ As String = "Update Infos SET [email protected], [email protected], [email protected], [Birthdate][email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [Age][email protected], [Telnum][email protected], [Mobilenum1][email protected], [Mobilenum2][email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [Image][email protected] WHERE [StudentID][email protected] " 
       Dim com As New OleDbCommand(editQ, con) 
       con.Open() 


       com.Parameters.AddWithValue("@fid", Stdntid.Text.ToString) 
       com.Parameters.AddWithValue("@f1", fname.Text) 
       com.Parameters.AddWithValue("@f2", Sname.Text) 
       com.Parameters.AddWithValue("@f3", Mname.Text) 
       com.Parameters.AddWithValue("@f4", Datetxt.Value.ToShortDateString) 
       com.Parameters.AddWithValue("@f5", gendertxt.SelectedItem.ToString) 
       com.Parameters.AddWithValue("@f6", homaddtxt.Text) 
       com.Parameters.AddWithValue("@f7", Cityadd.Text) 
       com.Parameters.AddWithValue("@f8", brgyadd.Text) 
       com.Parameters.AddWithValue("@f9", emailaddtxt.Text) 
       com.Parameters.AddWithValue("@f10", birthPtxt.Text) 
       com.Parameters.AddWithValue("@f11", Yrlvltxt.SelectedItem.ToString) 
       com.Parameters.AddWithValue("@f12", coursetxt.Text) 
       com.Parameters.AddWithValue("@f13", emailadd2txt.Text) 
       com.Parameters.AddWithValue("@f14", Agetxt.SelectedItem.ToString) 
       com.Parameters.AddWithValue("@f15", telnumtxt.Text) 
       com.Parameters.AddWithValue("@f16", mobilenum1txt.Text) 
       com.Parameters.AddWithValue("@f17", mobilenum2txt.Text) 
       com.Parameters.AddWithValue("@f18", FathersL.Text) 
       com.Parameters.AddWithValue("@f19", fatherstxt.Text) 
       com.Parameters.AddWithValue("@f20", MothersL.Text) 
       com.Parameters.AddWithValue("@f21", motherstxt.Text) 
       com.Parameters.AddWithValue("@f22", fOcc.Text) 
       com.Parameters.AddWithValue("@f23", mOcc.Text) 
       com.Parameters.AddWithValue("@f24", streetadd.Text) 


       ' image content 
       Dim image As OleDbParameter = New OleDbParameter("@Image", SqlDbType.Image) 
       image.Value = datapic_update 
       com.Parameters.Add(Image) 


       com.ExecuteNonQuery() 
       If com.ExecuteNonQuery > 0 Then 
        MsgBox("Records Successfully Updated.", vbInformation, "Updated.") 
       Else 
        MsgBox("error") 
       End If 



      End If 
      con.Close() 



     End Sub 
+0

Возможный дубликат [как вставить изображение в базу данных mysql, используя vb.net и соединение adodb] (http://stackoverflow.com/questions/24924982/how-to-insert-image-in-mysql-database-using -vb-net-and-adodb-connection) один из 71 000 здесь – Plutonix

+0

уже пробовал, но все равно не будет работать – MichaelXX

+0

Я все еще получаю ту же ошибку – MichaelXX

ответ

0

Тот факт, что ExecuteNonQuery вызов удачен, но возвращает ноль означает, что не было никаких записей в ваша база данных, которая соответствует вашей статье WHERE. Причина в том, что вы неправильно добавляете свои параметры.

Оба оператора Jet и ACE OLE DB используют только позиционные параметры. Даже если вы можете указать имена параметров, эти имена игнорируются провайдером. Это означает, что вам нужно добавить свои параметры в OleDbCommand в том же порядке, что и в коде SQL. Ты не.

В коде SQL, @fid последний параметр, но это последний параметр, который вы добавить к команде:

com.Parameters.AddWithValue("@f24", streetadd.Text) 

Это поэтому используется значение, чтобы найти соответствующие записи. Перегруппируйте код, который добавляет параметры в команду, и добавьте @fid последним, и вам будет хорошо.

+0

спасибо, что он работает сейчас. Я перегруппировал @fid после блоков содержимого изображения – MichaelXX

Смежные вопросы