写入MYSQL数据库数据为空,不知何解?

xX君少Xx 2016-11-22 04:19:28
Sub aa()
Dim MyStream As New IO.MemoryStream
PictureBox1.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp)
'Dim MyBytes(MyStream.Length) As Byte '声明数组
Dim MyBytes
MyBytes = MyStream.GetBuffer

Dim mCommand As MySqlCommand = New MySqlCommand()
Try
If Cn.State = ConnectionState.Closed Then
Cn.Open()
Dim mSQLcomm As MySqlCommand = New MySqlCommand("set names gbk", Cn)
mSQLcomm.ExecuteNonQuery()
mSQLcomm.Dispose()
End If

mCommand.Parameters.Add(New MySqlParameter("img", MyBytes))
mCommand.Parameters.Add(New MySqlParameter("qq", "qqqq"))
mCommand.Connection = Cn
mCommand.CommandText = "insert into testx (img,qq) values (img,qq)"
mCommand.CommandType = CommandType.Text
mCommand.ExecuteNonQuery()
Cn.Close()
Catch ex As Exception
If Cn.State = ConnectionState.Open Then
Cn.Close()
End If
End Try
End Sub

以上代码可以正常运行,如果将insert into testx (img,qq) values (img,qq)改为insert into testx (img,qq) values ('img','qq'),两个字段能正常写入img和qq两个字符,但使用上述的方式写入时就显示为空,不知何解?请指教!
...全文
739 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xX君少Xx 2016-12-16
  • 打赏
  • 举报
回复
引用 6 楼 tiomer 的回复:
Mybytes是数组,直接插到参数是不行的吧,话说数据库也没一个类型是数组吧,两边类型不统一,肯定插不进去吧。如果确实要插,应该将Mybytes转成Base64形式字符串就无问题了
那应该怎么弄呢?不大懂!
tiomer 2016-12-05
  • 打赏
  • 举报
回复
Mybytes是数组,直接插到参数是不行的吧,话说数据库也没一个类型是数组吧,两边类型不统一,肯定插不进去吧。如果确实要插,应该将Mybytes转成Base64形式字符串就无问题了
xX君少Xx 2016-11-24
  • 打赏
  • 举报
回复
请那位老大帮我看看呗,很明显是变量有值,但在传递的过程中值没有正常传递到数据库中!
xX君少Xx 2016-11-22
  • 打赏
  • 举报
回复
Sub aa() Dim MyStream As New IO.MemoryStream PictureBox1.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp) 'Dim MyBytes(MyStream.Length) As Byte '声明数组 Dim MyBytes MyBytes = MyStream.GetBuffer Dim mCommand As MySqlCommand = New MySqlCommand() Try If Cn.State = ConnectionState.Closed Then Cn.Open() Dim mSQLcomm As MySqlCommand = New MySqlCommand("set names gbk", Cn) mSQLcomm.ExecuteNonQuery() mSQLcomm.Dispose() End If mCommand.Parameters.Add(New MySqlParameter("@img", MyBytes)) mCommand.Parameters.Add(New MySqlParameter("@qq", "qqqq")) mCommand.Connection = Cn mCommand.CommandText = "insert into testx (img,qq) values (@img,@qq)" mCommand.CommandType = CommandType.Text mCommand.ExecuteNonQuery() Cn.Close() Catch ex As Exception If Cn.State = ConnectionState.Open Then Cn.Close() End If End Try End Sub
xX君少Xx 2016-11-22
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
"insert into testx (img,qq) values (@img,@qq)"
试过了,结果也是一样的!
  • 打赏
  • 举报
回复
"insert into testx (img,qq) values (@img,@qq)"
xX君少Xx 2016-11-22
  • 打赏
  • 举报
回复
也就是说,不通过mCommand.Parameters.Add(New MySqlParameter("img", MyBytes)) mCommand.Parameters.Add(New MySqlParameter("qq", "qqqq")) 传递参数的话,直接用SQL语句写数据是可以正常写入,但传递参数就不正常!

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧