动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > ASP技巧 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

用VB6读写数据库中的图片


发表日期:2000-10-20


很多兄弟在这里问关于VB6读写数据库中的图片的问题,在此有一例,希有所启发。
   1,以人名和相关图片为例说明,数据库为access,有如下字段:Name char,picture OLE object,FileLength
Number。当为ms sql时,将picture改为lob即可。
   2,示例包含control:commom dialog,picture,listbox。
源码如下:
Option Explicit

PRivate Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As
String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long,
ByVal lpBuffer As String) As Long
Private Const MAX_PATH = 260

Private m_DBConn As ADODB.Connection

Private Const BLOCK_SIZE = 10000
' Return a temporary file name.
Private Function TemporaryFileName() As String
Dim temp_path As String
Dim temp_file As String
Dim length As Long

    ' Get the temporary file path.
    temp_path = Space$(MAX_PATH)
    length = GetTempPath(MAX_PATH, temp_path)
    temp_path = Left$(temp_path, length)

    ' Get the file name.
    temp_file = Space$(MAX_PATH)
    GetTempFileName temp_path, "per", 0, temp_file
    TemporaryFileName = Left$(temp_file, InStr(temp_file, Chr$(0)) - 1)
End Function
Private Sub Form_Load()
Dim db_file As String
Dim rs As ADODB.Recordset

    ' Get the database file name.
    db_file = App.Path
    If Right$(db_file, 1) <> "\" Then db_file = db_file & "\"
    db_file = db_file & "dbpict.mdb"

    ' Open the database connection.
    Set m_DBConn = New ADODB.Connection
    m_DBConn.Open _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & db_file & ";" & _
        "Persist Security Info=False"

    ' Get the list of people.
    Set rs = m_DBConn.Execute("SELECT Name FROM People ORDER BY Name", , adCmdText)
    Do While Not rs.EOF
        lstPeople.AddItem rs!Name
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
End Sub
Private Sub Form_Resize()
    lstPeople.Height = ScaleHeight
End Sub


' Display the clicked person.
Private Sub lstPeople_Click()
Dim rs As ADODB.Recordset
Dim bytes() As Byte
Dim file_name As String
Dim file_num As Integer
Dim file_length As Long
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long
Dim hgt As Single

    picPerson.Visible = False
    Screen.MousePointer = vbHourglass
    DoEvents

    ' Get the record.
    Set rs = m_DBConn.Execute("SELECT * FROM People WHERE Name='" & _
        lstPeople.Text & "'", , adCmdText)
    If rs.EOF Then Exit Sub

    ' Get a temporary file name.
    file_name = TemporaryFileName()

    ' Open the file.
    file_num = FreeFile
    Open file_name For Binary As #file_num

    ' Copy the data into the file.
    file_length = rs!FileLength
    num_blocks = file_length / BLOCK_SIZE
    left_over = file_length Mod BLOCK_SIZE

    For block_num = 1 To num_blocks
        bytes() = rs!Picture.GetChunk(BLOCK_SIZE)
        Put #file_num, , bytes()
    Next block_num

    If left_over > 0 Then
        bytes() = rs!Picture.GetChunk(left_over)
        Put #file_num, , bytes()
    End If

    Close #file_num

    ' Display the picture file.
    picPerson.Picture = LoadPicture(file_name)
    picPerson.Visible = True

    Width = picPerson.Left + picPerson.Width + Width - ScaleWidth
    hgt = picPerson.Top + picPerson.Height + Height - ScaleHeight
    If hgt < 1440 Then hgt = 1440
    Height = hgt

    Kill file_name
    Screen.MousePointer = vbDefault
End Sub

Private Sub mnuRecordAdd_Click()
Dim rs As ADODB.Recordset
Dim person_name As String
Dim file_num As String
Dim file_length As String
Dim bytes() As Byte
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long

    person_name = InputBox("Name")
    If Len(person_name) = 0 Then Exit Sub

    dlgPicture.Flags = _
        cdlOFNFileMustExist Or _
        cdlOFNHideReadOnly Or _
        cdlOFNExplorer
    dlgPicture.CancelError = True
    dlgPicture.Filter = "Graphics Files|*.bmp;*.ico;*.jpg;*.gif"

    On Error Resume Next
    dlgPicture.ShowOpen
    If Err.Number = cdlCancel Then
        Exit Sub
    ElseIf Err.Number <> 0 Then
        MsgBox "Error " & Format$(Err.Number) & _
            " selecting file." & vbCrLf & Err.Description
        Exit Sub
    End If

    ' Open the picture file.
    file_num = FreeFile
    Open dlgPicture.FileName For Binary Access Read As #file_num

    file_length = LOF(file_num)
    If file_length > 0 Then
        num_blocks = file_length / BLOCK_SIZE
        left_over = file_length Mod BLOCK_SIZE

        Set rs = New ADODB.Recordset
        rs.CursorType = adOpenKeyset
        rs.LockType = adLockOptimistic
        rs.Open "Select Name, Picture, FileLength FROM People", m_DBConn

        rs.AddNew
        rs!Name = person_name
        rs!FileLength = file_length

        ReDim bytes(BLOCK_SIZE)
        For block_num = 1 To num_blocks
            Get #file_num, , bytes()
            rs!Picture.AppendChunk bytes()
        Next block_num

        If left_over > 0 Then
            ReDim bytes(left_over)
            Get #file_num, , bytes()
            rs!Picture.AppendChunk bytes()
        End If

        rs.Update
        Close #file_num

        lstPeople.AddItem person_name
        lstPeople.Text = person_name
    End If
End Sub
关注此文的读者还看过:
·2012-5-22 17:19:27 ASP中遍历和操作Application对象的集合
·2012-5-22 17:16:07 ASP实现多语言支持
·2012-5-22 17:15:00 用排序串字段实现树状结构(例程——显示贴子内容)
·2012-5-22 17:14:23 利用 Meta Tag 来增加文件属性
·2012-5-22 17:13:56 将站点加入频道栏源代码
·2012-5-22 17:13:42 用ASP文件实现CPU的使用率始终保持100%
·2012-5-22 17:13:29 ASP跳过错误
·2012-5-22 17:13:02 拦截表单的另外一种写法
·2012-5-22 17:12:25 一个通用数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
ASP源码推荐
·专业大型家教信息网
·江南影视 2006 ACC 多风格 第一
·雪人论坛 v2.1 简单美化版
·SERCMS游戏币交易系统
·伊通县信息港 v1.02
·智睿企业网站管理系统 v3.7.3
·广州市约克宝售后服务系统 v1.0
·QQ空间留言代码站完整版
·Operator Wiki 0.3
·小亮QQ空间整站
·英文企业cms网站管理系统 v2.0
·阿彪留言册 v1.0
项目外包信息
·寻会php的程序员外包网站
·派桑网络-网络营销专家
·汽车配件网站制作 50000元
·整站SEO优化
·课件门户网程序
·求长期合作网站设计制作高手
·公司网站重新改版 8000元
·asp企业网站小改动
·网站flash片头
·文化传播公司网站设计稿
·UI界面设计
·产品外观改版设计 15000元
·照明灯具网站设计 10000元
·求长期合作网站设计制作高手
·做B2C网站 20000元
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP技巧>的内容


网络编程文章分类
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索|酒店预订|机票预订
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号