以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助,拍照直接插入数据库二进制列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84961)

--  作者:晕了快扶我
--  发布时间:2016/5/13 21:15:00
--  求助,拍照直接插入数据库二进制列
 Dim c As new camera
Dim pic As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Dim dr As DataRow = Tables("职员信息管理_职员信息表").Current.DataRow
c.Capture() \'开始照相
If c.image IsNot Nothing Then \'照相成功
    pic.Image = c.Image
    dr.SQLInsertFile("photo",pic.ImageFile)
End If


红色的出错了,文件名应该写什么?帮助里也没有

--  作者:晕了快扶我
--  发布时间:2016/5/14 0:02:00
--  
图片点击可在新窗口打开查看 难道一定要存储到本地,然后再调取来存储进去吗?
--  作者:qianqian1530
--  发布时间:2016/5/14 9:32:00
--  
  这是肯定低.
--  作者:Hyphen
--  发布时间:2016/5/14 10:15:00
--  
是的,参数只接受文件路径
--  作者:晕了快扶我
--  发布时间:2016/5/14 13:40:00
--  
我也是醉了,这个本来可以一次性搞完的
--  作者:Hyphen
--  发布时间:2016/5/14 14:39:00
--  
自己写代码操作
Dim imgStream As New IO.MemoryStream
Dim PictureBox1 As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Dim b As New Bitmap(PictureBox1.Image)
b.Save(imgStream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim data As Byte() = imgStream.GetBuffer
imgStream.Dispose()
Dim conn As New System.Data.SqlClient.SqlConn ection("server=localhost;database=test;Integrated Security=true;")
conn.Open()
Dim sqlcomm As New System.Data.SqlClient.SqlCommand
sqlcomm.Connection = conn
sqlcomm.CommandText = "UPD ATE [DDDDD] SET [第八列] = @第八列 WHERE [第一列] = @第一列 "
sqlcomm.Parameters.Add("@第八列", System.Data.SqlDbType.Image).Value = data
sqlcomm.Parameters.Add("@第一列", System.Data.SqlDbType.NVarChar).Value = "66"
sqlcomm.ExecuteNonQuery()
conn.Close()

--  作者:大红袍
--  发布时间:2016/5/15 23:06:00
--  

还不如用代码插入 


 


Dim imgStream As New IO.MemoryStream
Dim PictureBox1 As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Dim b As New Bitmap(PictureBox1.Image)
b.Save(imgStream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim imageByte As Byte() = imgStream.GetBuffer
imgStream.Dispose()

Dim ImageString As String = BitConverter.ToString(imageByte).Replace("-", "")  \' SQLCommand 不能直接Insert 二进制,只能拼接SQL语句,所以这里把二进制变成字符                                                


Dim cmd As SQLCommand = new SQLCommand()
cmd.ConnectionName = "SqlServerDB"
cmd.CommandText = "Insert into 表名 (列名) values (0x" + ImageString + ")"  \'这里的ImageString 就是前4条几句根据图片转换来的字符串

cmd.ExecuteNonQuery()

[此贴子已经被作者于2016/5/15 23:07:56编辑过]