在VB中,如何js上传图片到数据库库?

用VB如何实现文件数据对SQL Server上传下载
 1、利用Adodc控件连接
  Visual Basic提供了一个Adodc控件。它通过Adodc属性的设置,按照向导提示完成数据库的连接。具体过程如下:
  首先在属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下例:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist;Security Info=False;Initial Catalog=Science_File;Data Source=Data_Server
  通过下列语句,即可连接到指定的数据库:
dim odbcstr as String, adocon As New ADODB.Connection
odbcstr = &quotrovider=SQLOLEDB.1;Integrated Security=SSPIersist Security Info=F_
Initial Catalog=Science_FData Source=Data_Server&
adocon.Open odbcstr '连接到数据库
  2、利用NetServerEnum函数
  该函数是一个API函数,通过它可获得一个安装了SQL Server数据库管理系统的服务器列表。方法如下:
Private Declare Function NetServerEnum Lib &netapi32& _
(lpServer As Any, ByVal lLevel As Long, vBuffer As Any, _
lPreferedMaxLen As Long, lEntriesRead As Long, lTotalEntries As Long, _
ByVal lServerType As Long, ByVal sDomain$, vResume As Any) As Long
Private Declare Sub CopyMemory Lib &kernel32& Alias &RtlMoveMemory& (Destination _
As Any, Source As Any, ByVal Length As Long)
Private Declare Function lstrlenW Lib &kernel32& (ByVal lpString As Long) As Long
Private Type SV_100
 platform As Long
 name As Long
dim sv100 As SV_100, nRet As Long, i as long, lServerInfo As Long
dim lServerInfo As Long, lPreferedMaxLen As Long, lEntriesRead As Long
dim lTotalEntries As Long, sDomain As String, vResume As Variant
dim buffer() As Byte, nLen As Long
lPreferedMaxLen = 65536
nRet = NetServerEnum(0, 101, lServerInfo, lPreferedMaxLen, lEntriesRead, lTotalEntries, 4, sDomain, vResume)
If nRet = 0 or nRet = 234& Then
 For i = 0 To lEntriesRead - 1
  CopyMemory sv100, ByVal lServerInfo, Len(sv100)
  nLen = lstrlenW(sv100.name) * 2
  If nLen Then
   ReDim buffer(0 To (nLen - 1)) As Byte
   CopyMemory buffer(0), ByVal sv100.name, nLen
  End If
  Combo1.List(i) = buffer '服务器名
  lServerInfo = lServerInfo + 24
  得到的服务器名通过Combo1控件显示,可从中选择储存档案数据的服务器名,再通过下列语句连接到选定服务器中的数据库:
odbcstr = &quotrovider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=F_
Initial Catalog=Science_FData Source=& & bo1.Text
adocon.Open odbcstr '连接到数据库
  其中的变量含义与前述相同,bol.Text的内容即为选定的服务器名。
  通过以上两种方法皆可达到连接目的,前者简洁但有很大局限性,当数据服务器名称发生变化时,必须修改源代码,很不方便。后者既有较强的操作性又很直观。在笔者开发的科技档案管理系统采用了第二种方法。
数据的上传
  数据的上传就是将档案文件存储到数据表中。在数据上传时,因情况不同一般有两种方式,即单一上传和批量上传,前者指一次上传一个文件(在数据表中增加一条记录),后者指一次将一个文件夹中的所有文件上传到数据库。两者在实质上是统一的,批量上传时,只需用一个循环语句就可。以下介绍单一上传的过程。1、打开数据表
  通过以下语句打开数据表:
dim office_rst As New ADODB.Recordset
adocon.CursorLocation = adUseClient
office_rst.Open &office&, adocon, adOpenDynamic, adLockOptimistic, adCmdTable
  2、添加新记录并上传文件
  假定通过一些操作已经获得了要上传的文件路径和名称(例如,可利用CommomDialog控件获得),保存在string型变量filePath中。上传的关键语句如下:
dim adofld As ADODB.Field, DataArr() As Byte, filelen As Long, file_num As Long
office_rst.AddNew
Set adofld = office_rst(&office&)
adorst(&filename&).Value = filePath
file_num = FreeFile '返回一个 Integer,代表下一个可供Open语句使用的文件号
Open filePath For Binary Access Read As file_num '打开磁盘文件
filelen = LOF(file_num) '求文件长度
ReDim DataArr(filelen) '根据文件长度定义动态数组大小
Get sourcefile, , DataArr '将一个已打开的磁盘文件读入数组变量之中
adofld.AppendChunk DataArr() '将数组内容存入image型字段中
Close file_num '关闭磁盘文件
adorst.update
  其中的filename为表office中的一个string型字段,用于存储档案文件的名称。
  数据的下载
  在完成数据库连接后不仅可以对数据库进行文件上传的操作,还可以很方便的进行下载(浏览)。通过Web Browser控件可浏览各种类型的文件。
  1、WebBrowser控件
  WebBrowser控件使应用程序增加了浏览功能,利用它可浏览常见的一些文件格式,如Office、CAD、BMP、JEG等。包含了WebBrowser控件的应用程序不仅可以对本机上的文件,还可以对局域网甚至世界网络范围内的文件进行浏览。
  WebBrowse控件有很多方法,但这里只用到了&Navigate&方法,Navigate方法就是通过一个文件的全路径去访问这个文件,具体用法为:
WebBrowOff.Navigate URL
  其中WebBrowOff 是一个WebBrowser控件,URL是必需的string型参数,它可以是表示在Internet的WWW服务程序上用于指定信息位置的字符串,也可以是一个全路径或者是对要浏览的文件通过通用命名标准命名的位置和名称。
  2、文件数据的下载
  在程序中可利用DataList控件列出数据库中保存的文件的名称,下载的思路为:首先定位要下载的文件所在的记录;然后将文件的内容赋给一个数组,并写入一个二进制文件;最后将该文件路径、文件名传给WebBrowser控件。
  关键代码如下所示:
dim FileArr () As Byte, current as string
filelen = office_rst.Fields(&office&).ActualSize '得到office字段中的文件数据的大小
ReDim FileArr(filelen)
FileArr() = office_rst.Fields(&office&).GetChunk(filelen) '将字段中数据写入动态数组中
bufferfile = FreeFile
Open &tempfile& For Binary Access Read Write As bufferfile '打开一个临时文件
Put bufferfile, ,FileArr '将动态数组FileArr中的数据写入临时文件tempfile中
current = CurDir & &\tempfile& '获取临时文件的全路径
WebBrowOff.Navigate current '在WebBrowser控件中显示文件内容
  以上代码中未定义的变量与前述相同。
UID719582&帖子99&精华0&积分27&资产27 信元&发贴收入510 信元&推广收入0 信元&附件收入0 信元&下载支出533 信元&阅读权限10&在线时间55 小时&注册时间&最后登录&
[通过 QQ、MSN 分享给朋友]在VB中,如何上传图片到数据库?_百度知道
数据如果是服务器的,那么vb只负责上传文件。保存到数据库由服务端程序负责,如果是本地,就自己操作保存到数据库就行了
不好意思我表述不太清楚吧。我的意思是:其实就好像是换qq头像一样,可以从自己本地电脑上传头像图片,保存后以二进制保存到access数据库。“浏览”按钮的代码是什么?“保存”按钮的代码又是什么?
就是一个上传文件而已啊。你得写服务器的代码接收文件并保存到数据库。vb就是一个提交数据的功能。可以用xmlhttp模拟
其他类似问题
为您推荐:
上传图片的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您的位置: >
本文以Visual&Basic6.0和Server&2000环境下的数据库为例,介绍文件数据对SQL&Server&2000数据库的上传和下载。
很多单位尤其是制造业、设计院,计算机应用开展的较早。在这些单位,各种法规文件的下达以及日常工作中产生的大量数据,形成了种类繁杂、数量庞大档案资料(各种文件)。面对海量数据,原有档案管理系统在进行数据的备份、还原、更新与维护时多数已力不从心。传统的基于文件的管理方式,还给各种档案的保密工作带来了隐患。为此,越来越多的单位开始开发基于数据库的文件档案管理系统,以期克服这些毛病。&
数据库的连接  对数据库的操作一定在已经与本地抑或是网络数据库建立了联系的基础上,建立连接这一需求可以通过两种方式实现。  为便于理解,这里假定服务器名为Data_Server,档案数据库名为Science_File,其中的一个数据表名为office,设计有一个名称为office、类型为Image的字段,用于保存文件。为便于将不同大小的文件存储在SQL&Server的数据表中,必须在数据表中创建一个Image型的字段,该字段可存储的最大文件达2GB字节。  1、利用Adodc控件连接  Visual&Basic提供了一个Adodc控件。它通过Adodc属性的设置,按照向导提示完成数据库的连接。具体过程如下:  首先在属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下例:Provider=SQLOLEDB.1;Integrated&Security=SSPI;Persist;Security&Info=False;Initial&Catalog=Science_File;Data&Source=Data_Server&  通过下列语句,即可连接到指定的数据库:dim&odbcstr&as&String,&adocon&As&New&ADODB.Connectionodbcstr&=&"Provider=SQLOLEDB.1;Integrated&Security=SSPI;Persist&Security&Info=F_Initial&Catalog=Science_FData&Source=Data_Server"adocon.Open&odbcstr&'连接到数据库&  2、利用NetServerEnum函数  该函数是一个API函数,通过它可获得一个安装了SQL&Server数据库管理系统的服务器列表。方法如下:&Private&Declare&Function&NetServerEnum&Lib&"netapi32"&_(lpServer&As&Any,&ByVal&lLevel&As&Long,&vBuffer&As&Any,&_lPreferedMaxLen&As&Long,&lEntriesRead&As&Long,&lTotalEntries&As&Long,&_ByVal&lServerType&As&Long,&ByVal&sDomain$,&vResume&As&Any)&As&LongPrivate&Declare&Sub&CopyMemory&Lib&"kernel32"&Alias&"RtlMoveMemory"&(Destination&_As&Any,&Source&As&Any,&ByVal&Length&As&Long)Private&Declare&Function&lstrlenW&Lib&"kernel32"&(ByVal&lpString&As&Long)&As&LongPrivate&Type&SV_100 platform&As&Long name&As&LongEnd&Typedim&sv100&As&SV_100,&nRet&As&Long,&i&as&long,&lServerInfo&As&Longdim&lServerInfo&As&Long,&lPreferedMaxLen&As&Long,&lEntriesRead&As&Longdim&lTotalEntries&As&Long,&sDomain&As&String,&vResume&As&Variantdim&buffer()&As&Byte,&nLen&As&LonglPreferedMaxLen&=&65536nRet&=&NetServerEnum(0,&101,&lServerInfo,&lPreferedMaxLen,&lEntriesRead,&lTotalEntries,&4,&sDomain,&vResume)If&nRet&=&0&or&nRet&=&234&&Then For&i&=&0&To&lEntriesRead&-&1  CopyMemory&sv100,&ByVal&lServerInfo,&Len(sv100)  nLen&=&lstrlenW(sv100.name)&*&2&  If&nLen&Then   ReDim&buffer(0&To&(nLen&-&1))&As&Byte   CopyMemory&buffer(0),&ByVal&sv100.name,&nLen  End&If  Combo1.List(i)&=&buffer&'服务器名  lServerInfo&=&lServerInfo&+&24 Next&iEnd&If&  得到的服务器名通过Combo1控件显示,可从中选择储存档案数据的服务器名,再通过下列语句连接到选定服务器中的数据库:odbcstr&=&"Provider=SQLOLEDB.1;Integrated&Security=SSPI;Persist&Security&Info=F_Initial&Catalog=Science_FData&Source="&&&bo1.Textadocon.Open&odbcstr&'连接到数据库&  其中的变量含义与前述相同,bol.Text的内容即为选定的服务器名。  通过以上两种方法皆可达到连接目的,前者简洁但有很大局限性,当数据服务器名称发生变化时,必须修改源代码,很不方便。后者既有较强的操作性又很直观。在笔者开发的科技档案管理系统采用了第二种方法。数据的上传  数据的上传就是将档案文件存储到数据表中。在数据上传时,因情况不同一般有两种方式,即单一上传和批量上传,前者指一次上传一个文件(在数据表中增加一条记录),后者指一次将一个文件夹中的所有文件上传到数据库。两者在实质上是统一的,批量上传时,只需用一个循环语句就可。以下介绍单一上传的过程。1、打开数据表  通过以下语句打开数据表:dim&office_rst&As&New&ADODB.Recordsetadocon.CursorLocation&=&adUseClient&office_rst.Open&"office",&adocon,&adOpenDynamic,&adLockOptimistic,&adCmdTable&  2、添加新记录并上传文件  假定通过一些操作已经获得了要上传的文件路径和名称(例如,可利用CommomDialog控件获得),保存在string型变量filePath中。上传的关键语句如下:dim&adofld&As&ADODB.Field,&DataArr()&As&Byte,&filelen&As&Long,&file_num&As&Longoffice_rst.AddNewSet&adofld&=&office_rst("office")adorst("filename").Value&=&filePathfile_num&=&FreeFile&'返回一个&Integer,代表下一个可供Open语句使用的文件号Open&filePath&For&Binary&Access&Read&As&file_num&'打开磁盘文件filelen&=&LOF(file_num)&'求文件长度ReDim&DataArr(filelen)&'根据文件长度定义动态数组大小Get&sourcefile,&,&DataArr&'将一个已打开的磁盘文件读入数组变量之中adofld.AppendChunk&DataArr()&'将数组内容存入image型字段中Close&file_num&'关闭磁盘文件adorst.update&  其中的filename为表office中的一个string型字段,用于存储档案文件的名称。  数据的下载  在完成数据库连接后不仅可以对数据库进行文件上传的操作,还可以很方便的进行下载(浏览)。通过Web&Browser控件可浏览各种类型的文件。  1、WebBrowser控件  WebBrowser控件使应用程序增加了浏览功能,利用它可浏览常见的一些文件格式,如Office、CAD、BMP、JEG等。包含了WebBrowser控件的应用程序不仅可以对本机上的文件,还可以对局域网甚至世界网络范围内的文件进行浏览。  WebBrowse控件有很多方法,但这里只用到了"Navigate"方法,Navigate方法就是通过一个文件的全路径去访问这个文件,具体用法为:WebBrowOff.Navigate&URL  其中WebBrowOff&是一个WebBrowser控件,URL是必需的string型参数,它可以是表示在Internet的WWW服务程序上用于指定信息位置的字符串,也可以是一个全路径或者是对要浏览的文件通过通用命名标准命名的位置和名称。  2、文件数据的下载  在程序中可利用DataList控件列出数据库中保存的文件的名称,下载的思路为:首先定位要下载的文件所在的记录;然后将文件的内容赋给一个数组,并写入一个二进制文件;最后将该文件路径、文件名传给WebBrowser控件。  关键代码如下所示:dim&FileArr&()&As&Byte,&current&as&stringfilelen&=&office_rst.Fields("office").ActualSize&'得到office字段中的文件数据的大小ReDim&FileArr(filelen)FileArr()&=&office_rst.Fields("office").GetChunk(filelen)&'将字段中数据写入动态数组中bufferfile&=&FreeFileOpen&"tempfile"&For&Binary&Access&Read&Write&As&bufferfile&'打开一个临时文件Put&bufferfile,&,FileArr&'将动态数组FileArr中的数据写入临时文件tempfile中current&=&CurDir&&&"\tempfile"&'获取临时文件的全路径WebBrowOff.Navigate&current&'在WebBrowser控件中显示文件内容&  以上代码中未定义的变量与前述相同。  结束语  现在很多单位档案资料数据类型繁多,有OFFICE文档、纯文本、图片资料以及包含基础地形图、现状专题图、规划设计成果图等多种图件的AUTOCAD文件,并且数据量巨大,文件数目极多,利用本文介绍的方法可以方便的对数据库各种数据进行查看、上传、下载操作,方便了有大量档案资料的单位对资料的管理.&
非常好我支持^.^
不好我反对
相关阅读:
( 发表人:发烧友 )
评价:好评中评差评
技术交流、我要发言
发表评论,获取积分! 请遵守相关规定!提 交
Powered by: 电子发烧友 (
. .All Rights Reserved 粤ICP备号在VB中存取数据库中的图片_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
在VB中存取数据库中的图片
在​V​B​中​存​取​数​据​库​中​的​图​片
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
VB中把图片(其他二进制文件)保存到数据库中的问题探讨
下载积分:30
内容提示:VB中把图片(其他二进制文件)保存到数据库中的问题探讨
文档格式:PDF|
浏览次数:116|
上传日期: 02:58:45|
文档星级:
该用户还上传了这些文档
VB中把图片(其他二进制文件)保存到数据库中的问题探讨
官方公共微信

我要回帖

更多关于 java上传图片到数据库 的文章

 

随机推荐