私はここにこのコードを挿入し、画像をデータベースから画像ボックスに表示しようとしました:stackoverflow.com/questions/5624760/store-picture-to-database-retrieve-from-db-into-どのようにmysqlデータベースの画像を更新する
:これは私が使用して挿入構文です:ピクチャ
とええ、それが働いて、私は同じ構文を使用して更新を行うことを試みたときにそれを挿入するとされるが、このエラーを得ました
Dim FileSize As UInt32
Dim mstream As New System.IO.MemoryStream()
gambar.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
FileSize = mstream.Length
mstream.Close()
call konek
strSQL = "insert into tbmahasiswa VALUES ('" & _
txtNIM.Text & "','" & _
txtNama.Text & "','" & _
Format(dtpTanggal.Value, "yyyy-MM-dd") & "','" & _
txtAlamat.Text & "','" & _
cboJurusan.Text & "',@gambar)"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
With com
.Parameters.AddWithValue("@gambar", arrImage)
.ExecuteNonQuery()
End With
と、この私は、データベースから画像ボックスに画像を表示するために使用するコード:
Dim imgData As Byte()
call konek
strSQL = "select * from tbMahasiswa where NIM ='" & txtNIM.Text & "'"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
Using rd = com.ExecuteReader
rd.Read()
If rd.HasRows Then
txtNama.Text = rd.Item(1)
dtpTanggal.Value = rd.Item(2)
txtAlamat.Text = rd.Item(3)
imgData = TryCast(rd.Item(5), Byte())
If imgData IsNot Nothing Then
Using ms As New MemoryStream(imgData)
gambar.Image = CType(Image.FromStream(ms), Image)
End Using
End If
End If
End Using
上記の両方を挿入し、取得画像のコードが動作しています! 、その後、私は更新のために、このコードを使用します。
Dim FileSize As UInt32
Dim mstream As New System.IO.MemoryStream()
gambar.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
FileSize = mstream.Length
mstream.Close()
call konek
strSQL = "update tbmahasiswa set Nama ='" & txtNama.Text & _
"', TglLahir ='" & Format(dtpTanggal.Value, "yyyy-MM-dd") & _
"', Alamat ='" & txtAlamat.Text & _
"', Jurusan ='" & cboJurusan.Text & _
"', gambar =' @gambar" & _
"' where NIM ='" & txtNIM.Text & "'"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
With com
.Parameters.AddWithValue("@gambar", arrImage)
.ExecuteNonQuery()
End With
をして、私は上の写真では、他のすべてのデータが正常に絵を除いて保存されているようなエラーを持って、それはいくつかの未知のファイルブロブ8キロバイトの大きさになります。
私はVBでの挿入、更新、削除の写真ではまだ初心者ですが、更新構文のコードで何が間違っているのか教えてください。それは既に当てはまりますが、何か不足していますか?それとも文法に完全に間違っていますか?
更新: 実際にコード "STONEQL"の上に "call konek"があり、 "konek"にはmysql接続を開くためのコードがあります。別のモジュールに入れます私のモジュールでは、ここに完全なコード:
Module modKoneksi
Public conn As New MySql.Data.MySqlClient.MySqlConnection
Public rd As MySql.Data.MySqlClient.MySqlDataReader
Public com As MySql.Data.MySqlClient.MySqlCommand
Public strSQL As String
Public Sub konek()
conn.Close()
strSQL = "server='localhost';user='root';pwd='';database='dbsekolah';"
Try
conn.ConnectionString = strSQL
conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
MsgBox(ex.Message)
End
End Try
End Sub
End Module
これは、私はその後半を知っているが、これは私のための作業コードであるあなたは簡単に私の問題
あなたのコードは、質問や回答のようなものではなく、[この回答](http://stackoverflow.com/a/31370711/1070452)に記載されている問題は無視されます。 – Plutonix
パラメータの前後に一重引用符@ガンバ。通常のSQLインジェクション攻撃を避けるために、パラメータを使用するようにすべての挿入と更新を変更する方がよい場合があります。 Dapperのようなデータアクセスライブラリは、パラメータの設定に関するすべてのボイラープレートコードの必要性を取り除くのに役立ちます。 –
私は実際には、私はまだこの問題で左または右を知らないと思う。面倒でなければ、新しいvbプロジェクトを作成して挿入し、更新し、それをピクチャボックスに取得してアップロードすることができます。私はそれがちょうどあなたのために数分かかることを知っています。あまりにも面倒であれば、私が使っているコードのどこで何が間違っているのかをもっと詳しく説明できますか?ありがとうございました –