[VB.NET]如何向数据库字段中写入文件?
2008-12-27 14:00
429 查看
<script type="text/javascript"><!--
google_ad_client = "pub-8333940862668978";
/* 728x90, 创建于 08-11-30 */
google_ad_slot = "4485230109";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
如何向数据库字段中写入文件?
1 如何向数据库字段中写入文件?(EXE,TXT,DOC等等)
2 如果文件较大,如何获取写入进度?
3 如何判断文件写入成功?
__________________________________________________________________________
忘了说了,还有就是如何读取这些文件
__________________________________________________________________________
将文件流转化为二进制数据后写入数据库,下面是我写的代码用于读写图片文件的,你只需要在数据库中为字段选择varbinary类型就可以实现其他类型的存储了.没整理,有点乱.
Dim b() As Byte
Dim fs As filestream
Dim br As BinaryReader
Dim strsql As String
Try
fs = New FileStream(finfo.Name, FileMode.Open, FileAccess.Read) ''将选择的图像文件读入到文件流
br = New BinaryReader(fs)
b = br.ReadBytes(fs.Length) ''将文件内容放到字节数组
Catch ex As Exception
MsgBox( "在将文件读入内存时出错: " + ex.Message)
End Try
br.Close()
fs.Close()
strsql = "insert into test(imageName,photo) "
strsql += "values( '' " & finfo.Name & " '',@photo) " ''二进制数据用@标识
Dim sqlCn As SqlConnection = New SqlConnection( "server=dell;database=study;uid=sa;pwd=; ")
sqlCn.Open()
Dim myCommand As SqlCommand = New SqlCommand(strsql, sqlCn)
myCommand.Parameters.Clear()
myCommand.Parameters.Add( "@photo ", OleDb.OleDbType.Binary)
myCommand.Parameters( "@photo ").Value = b
myCommand.ExecuteReader()
读取文件代码如下:
Dim strsql As String
strsql = "select * from test "
Dim sqlCn As SqlConnection = New SqlConnection( "server=dell;database=study;uid=sa;pwd=; ")
Dim bw As BinaryWriter
Dim bufferSize As Integer = 100 ''定义缓冲区长度为100
Dim outbyte() As Byte = New Byte(bufferSize - 1) {} ''定义缓冲区
Dim retval As Long
Dim startIndex As Long = 0
Dim dr As SqlDataReader
Dim myCommand As SqlCommand = New SqlCommand(strsql, sqlCn)
sqlCn.Open()
Dim ms As New System.IO.MemoryStream ''定义内存流对象,将数据库中存储的图像数据先放到内存流中
Try
bw = New BinaryWriter(ms)
dr = myCommand.ExecuteReader()
dr.Read()
TextBox1.Text = dr.GetString(1)
startIndex = 0
retval = dr.GetBytes(2, startIndex, outbyte, 0, bufferSize)
Do While retval = bufferSize ''循环读取余下的内容,每次读取buffersize个字节
bw.Write(outbyte)
bw.Flush() ''清空缓冲区
startIndex += bufferSize ''移动位置指针
retval = dr.GetBytes(2, startIndex, outbyte, 0, bufferSize)
Loop
Dim image As Image = image.FromStream(ms)
Me.PictureBox1.Image = image ''利用内存流在picturebox中生成图像
bw.Write(outbyte, 0, retval) ''写入最后一块数据
bw.Flush()
bw.Close()
ms.Close()
dr.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
__________________________________________________________________________
那如果是其他类型的文件呢,就不能用picturebox控件了,那如何读取呢?
__________________________________________________________________________
// 读取
int colIndex = DataReader.GetOrdinal( "MyLargeObjectColumnName ");
byte[] buffer = new byte[DataReader.GetBytes(colIndex, 0, null, 0, int.MaxValue)];
DataReader.GetBytes(colIndex, 0, buffer, 0, buffer.Length);
// 处理 buffer
__________________________________________________________________________
反正读出来全是二进制的,怎么搞随便
__________________________________________________________________________
相关文章推荐
- [VB.NET]如何在SQL2005和ADO环境下写入大于1GB的文件进入某一字段
- [VB.NET]vb.net如何读取数据库生成指定格式的xml文件
- ASP.NET 2.0 - 如何把上传的文件保存到数据库字段 (转自章立民CnBlogs)
- asp.net(c#)如何读取上传过程中的.txt文件中的数据,并将其写入数据库的
- [VB.NET]求助!如何判断数据库里某个字段是否为空!~~~
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- [VB.NET]如何导入excel表格到数据库
- 如何在ASP.NET中上传文件到数据库
- [VB.NET]vb.net如何连接odb数据库(OpenOffice里的那个数据库)
- 如何读取和写入文件或 BLOB 列使用 ADO.NET 和 Visual C#.NET
- asp.net mvc开发中,web.config文件如何配置数据库链接
- asp.net 上传文件并将路径写入数据库
- [ios]如何使用 Xcode,读取和写入存在的数据库文件?
- VB.NET 如何打开文件【加载到进程】
- 文件关联后vb.net 软件如何响应被关联文件的双击事件
- 如何使用C#或者VB.NET读写Access数据库的标题(Caption)、描述(Description)等字段信息?
- .NET : 如何将大文件写入到数据库中
- VB.net 文件读取、写入、追加操作
- 如何解决数据库中的字符型字段值中包含'0A'时,导出的文件用EXECEL打开时行数变多或者将结果导入数据库出错
- VB.NET 读取写入XML文件