2016-10-14 1 views
0

誰でも私をデータベースのmsアクセス2007に画像ボックスの画像を更新/編集する方法を教えていただけますか?このコードを使用してピクチャボックスからデータベース(MS Access2007)に画像を更新/保存する方法

イム:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

     Dim myCommand As New OleDbCommand 
     Dim SQL As String 
     Dim ms As New System.IO.MemoryStream 
     Dim bmpImage As New Bitmap(PictureBox1.Image) 

     Try 
      If Not con.State = ConnectionState.Open Then Open_Koneksi() 

      SQL = "UPDATE tb_pegawai SET [email protected], [email protected]_lahir, [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]" 
      myCommand.Parameters.AddWithValue("@nik", TextBox1.Text) 
      myCommand.Parameters.AddWithValue("@nama", TextBox2.Text) 
      myCommand.Parameters.AddWithValue("@tgl_lahir", DateTimePicker1.Text) 
      myCommand.Parameters.AddWithValue("@gender", jk.Text) 
      myCommand.Parameters.AddWithValue("@jabatan", ComboBox1.Text) 
      myCommand.Parameters.AddWithValue("@alamat", TextBox4.Text) 
      myCommand.Parameters.AddWithValue("@telepon", TextBox5.Text) 

      bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) 
      bytImage = ms.ToArray() 
      ms.Close() 

      myCommand.Parameters.AddWithValue("@image", bytImage) 

      MsgBox("Data saved") 

      myCommand.Connection = con 
      myCommand.CommandText = SQL 
      myCommand.ExecuteNonQuery() 

      Data_Load() 
      con.Close() 

     Catch myerror As OleDbException 
      MessageBox.Show("Error: " & myerror.Message) 
      Button1.Enabled = False 
     Finally 
      con.Dispose() 


     End Try 
    End Sub 

私はプログラムを実行すると、エラーか何かを取得できませんでした。 ただし、画像はmsアクセスで表示されません。

+0

あなたの質問は間違っています。アクセスは、名前付きパラメータをそのまま使用します。パラメータは、クエリに表示される順序で追加する必要があります。あなたはAddWithValueではなくすべてのものに 'Add'を使うべきです – Plutonix

+0

コードを書く方法の例を教えてもらえますか? – Madz

+1

たとえば、 "@nik"はクエリの最後のパラメータであるため、最後に追加する必要があります。 – LarsTech

答えて

0

パラメータを使用してアクセスできます。私はそれを何度も使ってきました。アクセス更新クエリの基本機能には、次のようなパラメータが追加されています。

Dim parameter As OleDbParameter = New OleDbParameter("@parameterKey", parameterValue) 
      command.Parameters.Add(parameter) 

事前に接続を作成する必要があります。これはアクセス更新機能のために私の十分にテストされた解決策です。

Function UpdateACCDB(ByRef connectionString As String, ByVal table As String, ByVal ColumnsAndValues As Dictionary(Of String, Object), ByRef whereColumn As String, ByRef whereParameter As Object) 

    table = "[" + table + "]" 
    Dim sqlStatement As String = "UPDATE " + table + " SET " 

    Dim rowsUpdated As Integer = 0 

    For Each pair As KeyValuePair(Of String, Object) In ColumnsAndValues 

     sqlStatement += "[" + pair.Key + "]" + "=" + "@" + pair.Key + "," 
    Next 

    sqlStatement = sqlStatement.Substring(0, sqlStatement.Length - 1) 

    sqlStatement += " WHERE " + whereColumn + "[email protected]" + whereColumn 

    Using connection As New OleDbConnection(connectionString) 

     Dim command As New OleDbCommand(sqlStatement, connection) 

     ''Set parameter for columns to be updated 
     For Each pair As KeyValuePair(Of String, Object) In ColumnsAndValues 
      Dim parameter As OleDbParameter = New OleDbParameter("@" + pair.Key, pair.Value) 
      command.Parameters.Add(parameter) 
     Next 

     ''Set parameter for where clause column 
     command.Parameters.Add(New OleDbParameter("@WHERE" + whereColumn, whereParameter)) 
     Try 
      command.Connection.Open() 
      rowsUpdated = command.ExecuteNonQuery() 
      command.Connection.Close() 
     Catch ex As Exception 
      Throw ex 
     Finally 
      If Not IsNothing(command) AndAlso Not IsNothing(command.Connection) AndAlso command.Connection.State = ConnectionState.Open Then 
       command.Connection.Close() 
      End If 
     End Try 
    End Using 
    Return rowsUpdated 
End Function 

あなたはCOLUMNNAMES、その値を辞書として提供されて見ることができるように。

関連する問題