我用的是vs2005.
在access里建立了一列叫“图片”,格式为ole对象。用于存储图片转换完的二进制。
代码如下:
Dim MyStream As New System.IO.MemoryStream
'将图片框中的图片以BMP形式存入内存流中
Me.PictureBox1.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim MyBytes(MyStream.Length) As Byte '声明数组
MyBytes = MyStream.ToArray()
这是转换成二进制的代码,应该木有问题。
但存储入access这句报错:sql = "INSERT INTO 幼儿信息(编号,姓名,年龄,身高,图片) VALUES('" & TextBox22.Text & "','" & TextBox1.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "'," & MyBytes & ")"
说是没有为类型“String”和“Byte的1维数组”定义运算符“&”。急!!!求解答,谢谢~
------解决方案--------------------
直接用SQL不好操作吧,非要这样的话建议把字节数组转换成字符串(有相应类处理的),然后读取出来的时候再还原
但这样麻烦,直接使用DataTable更新的话就可以直接把数组赋值到DataRow的
------解决方案--------------------
Dim MyStream As New System.IO.MemoryStream
Me.PictureBox1.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim MyBytes(MyStream.Length) As Byte '声明数组
MyBytes = MyStream.ToArray()
Dim Sql As String = "INSERT INTO 幼儿信息(编号,姓名,年龄,身高,图片) VALUES(?,?,?,?,?)"
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb")
Dim cmd As New OleDbCommand(Sql, cn)
cmd.Parameters.Add(New OleDbParameter("编号", TextBox1.Text))
cmd.Parameters.Add(New OleDbParameter("姓名", TextBox2.Text))
cmd.Parameters.Add(New OleDbParameter("年龄", TextBox3.Text))
cmd.Parameters.Add(New OleDbParameter("身高", TextBox4.Text))
cmd.Parameters.Add(New OleDbParameter("图片", MyBytes))
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()