• 全部
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
  • 问答

那么如果一个DATASET中包含图象等二进制数据,各组件间怎么用XML格式发送DATASET呢?有人告诉我XML不能表示二进制数据?

getian 2005-03-28 07:22:18
那么如果一个DATASET中包含图象等二进制数据,各组件间怎么用XML格式发送DATASET呢?有人告诉我XML不能表示二进制数据?
...全文
68 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
getian 2005-04-06
请问 GoldCodeClass 是什么类呢?我没有在MSDN,和CSDN搜索到相关的资料。
非常感谢您。
回复
华芸智森 2005-03-29

Private MyFile As String = ""
Private MyFileExt As String = ""
Dim Conn As New SqlClient.SqlConnection
Dim BaseCtrl As New GoldCodeClass.SqlDataBaseCtrl
Dim ID As Long

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

'//加载动画GIF可能会发生错误.
Dim Img As System.Drawing.Bitmap
Dim Pic As String
Dim MyXml As System.Xml.XmlDocument = New System.Xml.XmlDocument

MyXml.Load("c:\MyPhoto.xml")
Dim picNode As System.Xml.XmlNode
picNode = MyXml.SelectSingleNode("/pic/photo")
Pic = picNode.InnerText

Dim MemoryStream As System.IO.MemoryStream
MemoryStream = New System.IO.MemoryStream(Convert.FromBase64String(Pic)) '//将 BASE64 转为一个内存流
Img = New System.Drawing.Bitmap(MemoryStream) '//从内存流中建立一个图象.
Me.PictureBox1.Image = Img
MemoryStream.Close()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MyFile = "" Then
MessageBox.Show("请选择一个图片!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Dim MyImg As System.Drawing.Image = MyImg.FromFile(MyFile)
Dim memoryStream As System.IO.MemoryStream = New System.IO.MemoryStream
MyImg.Save(memoryStream, GetImageType(MyFileExt)) '//将文件保存到内存流中.
Dim b() As Byte
b = memoryStream.GetBuffer() '//取内存流数据
Dim pic As String = Convert.ToBase64String(b) '//将数据变为 BASE64 编号
memoryStream.Close()
Dim MyXml As System.Xml.XmlDocument = New System.Xml.XmlDocument
MyXml.LoadXml("<pic><name>孟宪会</name><photo>" + pic + "</photo></pic>")
MyXml.Save("c:\MyPhoto.xml")
Label1.Text = "文件被保存到了:" + Microsoft.VisualBasic.ChrW(13) + "c:\MyPhoto.xml"
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim openFileDialog1 As New OpenFileDialog
openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = "PNG(*.png)|*.png|Gif(*.gif)|*.gif|Jpg(*.jpg)|*.jpg|所有图象文件(*.*)|*.*"
openFileDialog1.FilterIndex = 2
openFileDialog1.RestoreDirectory = True
If openFileDialog1.ShowDialog() = DialogResult.OK Then
MyFile = openFileDialog1.FileName()
MyFileExt = MyFile.Substring(MyFile.LastIndexOf(".") + 1)

End If
End Sub

Public Function GetImageType(ByVal str As String) As System.Drawing.Imaging.ImageFormat
Select Case str.ToLower()
Case "jpg"
Return System.Drawing.Imaging.ImageFormat.Jpeg
Case "gif"
Return System.Drawing.Imaging.ImageFormat.Gif
Case "tiff"
Return System.Drawing.Imaging.ImageFormat.Tiff()
Case "icon"
Return System.Drawing.Imaging.ImageFormat.Icon
Case "image/png"
Return System.Drawing.Imaging.ImageFormat.Png
Case "bmp"
Return System.Drawing.Imaging.ImageFormat.Bmp
Case Else
Return System.Drawing.Imaging.ImageFormat.MemoryBmp
End Select
End Function

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'// System.Diagnostics.Process.Start("IExplore.exe", "http://xml.sz.luohuedu.net/")
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Conn = BaseCtrl.CreateSqlConn("MSTOP", "PUBS", "SA", "123")
ID = 1
End Sub

'//
'//保存图片到数据库
'//
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

If MyFile = "" Then
MessageBox.Show("请选择一个图片!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If

Dim MyImg As System.Drawing.Image = MyImg.FromFile(MyFile)
Dim MemoryStream As System.IO.MemoryStream = New System.IO.MemoryStream
MyImg.Save(MemoryStream, GetImageType(MyFileExt)) '//将文件保存到内存流中.
'//MyImg.Save("C:\A.JPG", System.Drawing.Imaging.ImageFormat.Jpeg) '//保存为JPEG格式.
Dim B() As Byte
B = memoryStream.GetBuffer() '//取内存流数据
Dim Pic As String = Convert.ToBase64String(B) '//将数据变为 BASE64 编号
MemoryStream.Close()

Dim StrSql As String
StrSql = "DELETE FROM LXA"
BaseCtrl.ExeSqlCmd(Conn, StrSql)

StrSql = "INSERT INTO LXA (ImgID,ImgStr) VALUES('" & ID & "','" & Pic & "')"
BaseCtrl.ExeSqlCmd(Conn, StrSql)

End Sub

'//
'//从数据库中取图片.
'//
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
'//加载动画GIF可能会发生错误.
Dim Img As System.Drawing.Bitmap
Dim Pic As String
Dim StrSql As String

Pic = BaseCtrl.GetOneValue(Conn, "lxa", "ImgStr", "where ImgID='" & ID & "'")
Dim MemoryStream As System.IO.MemoryStream
MemoryStream = New System.IO.MemoryStream(Convert.FromBase64String(Pic)) '//将 BASE64 转为一个内存流
Img = New System.Drawing.Bitmap(MemoryStream) '//从内存流中建立一个图象.
Me.PictureBox1.Image = Img
MemoryStream.Close()

End Sub

End Class
回复
华芸智森 2005-03-29

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub

'窗体重写处置以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意:以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents Button3 As System.Windows.Forms.Button
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Button4 As System.Windows.Forms.Button
Friend WithEvents Button5 As System.Windows.Forms.Button
Friend WithEvents Button6 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.PictureBox1 = New System.Windows.Forms.PictureBox
Me.Button3 = New System.Windows.Forms.Button
Me.Label1 = New System.Windows.Forms.Label
Me.Button4 = New System.Windows.Forms.Button
Me.Button5 = New System.Windows.Forms.Button
Me.Button6 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(438, 68)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(138, 25)
Me.Button1.TabIndex = 0
Me.Button1.Text = "将图象保存成XML"
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(438, 106)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(138, 24)
Me.Button2.TabIndex = 1
Me.Button2.Text = "从XML中得到图象"
'
'PictureBox1
'
Me.PictureBox1.Location = New System.Drawing.Point(8, 24)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(408, 272)
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
Me.PictureBox1.TabIndex = 2
Me.PictureBox1.TabStop = False
'
'Button3
'
Me.Button3.Location = New System.Drawing.Point(438, 30)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(138, 25)
Me.Button3.TabIndex = 3
Me.Button3.Text = "浏览图片…"
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(443, 145)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(126, 103)
Me.Label1.TabIndex = 4
'
'Button4
'
Me.Button4.Location = New System.Drawing.Point(456, 272)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(112, 32)
Me.Button4.TabIndex = 6
Me.Button4.Text = "保存到数据库"
'
'Button5
'
Me.Button5.Location = New System.Drawing.Point(456, 312)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(112, 32)
Me.Button5.TabIndex = 7
Me.Button5.Text = "从数据库中取图像"
'
'Button6
'
Me.Button6.Location = New System.Drawing.Point(456, 352)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(112, 32)
Me.Button6.TabIndex = 8
Me.Button6.Text = "Button6"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(600, 516)
Me.Controls.Add(Me.Button6)
Me.Controls.Add(Me.Button5)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.Button3)
Me.Controls.Add(Me.PictureBox1)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "图象文件和XML格式文件互换例子"
Me.ResumeLayout(False)

End Sub

#End Region
回复
jialiang 2005-03-29
xml 可以存放二进制数据
回复
相关推荐
发帖
VB
创建于2007-09-28

1.6w+

社区成员

VB技术相关讨论,主要为经典vb,即VB6.0
申请成为版主
帖子事件
创建了帖子
2005-03-28 07:22
社区公告
暂无公告