精华内容
下载资源
问答
  • access存BMP图片

    2007-07-20 21:40:08
    存储位图,大家可以参考
  • mdb文件中有个列是ole对象,现在要把图片以长二进制流方式到这个mdb文件的这个列中,请问该如何操作呢?紧急
  • 用VB.NET 如何中实现对ACCESS数据库中图像的存入,读取,更换(修改)? 源代码最好。新手,求指教。
  • ASP上传图片access.rar

    2012-02-13 16:53:14
    ASP上传图片access.rar 别人写的,试了好用。 是直接把图片存到数据库中。
  • c# 操作Access 存取图片(转)

    千次阅读 2013-06-03 11:48:51
    //存图片 MemoryStream stream = new MemoryStream(); byte[] photo = null; Image img = this.pictureBox1.Image; img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); photo = stream.ToArray(); ...
    //存图片
    
    MemoryStream stream = new MemoryStream();
    byte[] photo = null;
    Image img = this.pictureBox1.Image;
    img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
    photo = stream.ToArray();
    stream.Close();
    string sql = "Insert into Tb (ID,Photo) Values ('1',@img)";
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\d.mdb");
    conn.Open();
    OleDbCommand comm = new OleDbCommand(sql, conn);
    comm.Parameters.Add("@img", OleDbType.VarBinary, photo.Length).Value = photo;
    comm.ExecuteNonQuery();
    conn.Close();


    //取图片
    string sql = "Select photo From Tb Where ID='1'";
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\A.mdb");
    conn.Open();
    OleDbCommand comm = new OleDbCommand(sql, conn);
    OleDbDataReader sdr = comm.ExecuteReader();
    sdr.Read();
    MemoryStream ms = new MemoryStream((byte[])sdr[0]);
    Image image = Image.FromStream(ms);
    sdr.Close();
    conn.Close();
    pictureBox1.Image = image;
    展开全文
  • 这是大半年前的事了,帮一朋友研究如何批量导出Access里面图片(OLE对象)。Access没有提供直接导出图片的方法,很郁闷。查过一番资料,都不是很满意,决定自己鼓捣。经过N天的奋战,最后是成了。把思路记录一下...

    01 前言

    这是大半年前的事了,帮一朋友研究如何批量导出Access里面存的图片(OLE对象)。Access没有提供直接导出图片的方法,很郁闷。查过一番资料,都不是很满意,决定自己鼓捣。经过N天的奋战,最后是成了。把思路记录一下,抛砖引玉。

    02 正文

    (1)准备

    准备了一个Prod.accdb文件,只有一张表,其中prodPic存了JPG格式的图片(OLE 对象),结构如下:
    表结构

    注意

    • 本例只存了JPG格式的图片,如需其他格式,请自行修改测试

    (2)执行

    脚本如下:

    <#
    .DESCRIPTION
       批量导出ACCDB中的JPG图片,保存到指定路径
       测试环境:powershell 5.1 
       2019-08-02
    
    .EXAMPLE
        cmd下执行(powershell.exe 32bit),依次传入3个参数——ACCDB文件位置、JPG输出位置、SQL语句:
        C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file "D:\XXX\ExpJPGFromAccdb.ps1" "D:\XXX\Prod.accdb" "D:\XXX\exp" "select prodName as name,prodPic as pic from Products"
    #>
    
    #获取Access连接【accdb文件】
    function Get-AccessConnection-ACCDB
    {
    	[CmdletBinding()]
    	param (
    		[string]$filePath,
    		[string]$password
    	)
    	try
    	{
    		$con = New-Object System.Data.OleDb.OleDbConnection
    		$con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$filePath;"
    		if($password.trim()){
                $con += "Jet OLEDB:Database Password=$password"
            }
            Write-Verbose ("连接字符串:" + $con.ConnectionString)
    		$con.Open()
    		if ($con.State -eq "Open")
    		{
    			$con
    			Write-Verbose "连接已打开..."
    		}
    		else
    		{
    			$null
    		}
    	}
    	catch
    	{
    		Write-Verbose "获取数据库连接异常..."
            
            if([Environment]::Is64BitProcess){ Write-Verbose "当前环境或为64bit,请切换至32bit环境(32位的powershell)后重试!"}
            Write-Verbose "异常信息:$($Error[0])"
    	}
    }
    
    #关键在确定开始的地方
    function Export-File{
        param([string]$path,
        [byte[]]$data
        )
        try{
            #加入集合
            $list = New-Object System.Collections.ArrayList
            $list.AddRange($data)
            #定位JPG格式文件头
            $index = Get-ExactPosition -conditionCode "FFD8FF" -content $data[0..310]
            Write-Verbose "头部跳过:$index"
            if($index -gt 0){
                1.300 | ForEach-Object{$list.RemoveAt($list.Count-1)} #去掉后面
                1..$index | ForEach-Object{$list.RemoveAt(0)} #去掉前面
                [byte[]]$newData = $list.ToArray() #转为数组
                $stream = New-Object System.IO.MemoryStream($newData,0,$newData.Length) #如果上一步有问题,此步报异常   
                $img = [System.Drawing.Image]::FromStream($stream)
                $img.Save($path)
                return $true
            }
            Write-Host "文件头格式不符,跳过:$path"
            return $false
        }
        catch{
            Write-Host ("保存异常..."+$Error[0].Exception.Message)
            return $false
        }
    }
    
    #定位准确的文件头位置
    function Get-ExactPosition{
        param(
            [string]$conditionCode, #文件头格式
            [byte[]]$content
        )
        $index = (($content | ForEach-Object{"{0:X2}" -f $_ }) -join "").IndexOf($conditionCode)
        if($index -gt 1){
            $index /= 2
        }
        return $index
    }
    
    #主要处理逻辑
    function Main-Do{
        param(
            [string]$accfile,
            [string]$savePath,
            [string]$sql
        )
        if(-not (Test-Path $accfile)){
            Write-Host "ACCDB文件不存在,请检查参数!"
            return 
        }
        if(-not (Test-Path $savePath)){
            Write-Host "保存路径不存在,请检查参数!"
            return 
        }
        if([string]::IsNullOrEmpty($sql)){
            Write-Host "请传入有效的SQL!"
            return 
        }
        $count = 0
        $con = Get-AccessConnection-ACCDB -filePath $accfile
        if($con){
            try
            {
                [void][reflection.assembly]::Load('System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
                $Error.Clear()
                if(-not $savePath.EndsWith("\")){$savePath += "\"}
                $command = New-Object System.Data.OleDb.OleDbCommand($sql, $con)
                $reader = $command.ExecuteReader()
                while($reader.Read()){
                    foreach($c in 0..($reader.FieldCount-1)){
                        if("DBTYPE_LONGVARBINARY" -eq $reader.GetDataTypeName($c).ToString() -and $reader[$c].GetType() -ne [System.DBNull]){
                            #拼接文件名
                            if($reader["name"]){
                                $saveImg = $savePath+$reader["name"]+".jpg"
                            }else{
                                $saveImg = $savePath+"Row_"+("{0:d5}" -f ($count+1))+".jpg"
                            }
                            if(Export-File -path $saveImg -data $reader[$c]){
                                #Write-Host "$saveImg 保存成功!"
                                $count++
                            }else{
                                Write-Host "$saveImg 保存失败!"
                            }
                        }else{
                            Write-Verbose "跳过..$c"
                        }
                    }
                }
                $reader.Close()
            }
            
            catch [System.Exception]
            {
                Write-Host ("异常.."+$Error[0].Exception.Message)
            }
            finally
            {
                #Write-Host "关闭连接..."
                $con.Close()
            }
            
        }
        else{
            Write-Host "无连接!"
        }
        return $count
    }
    
    $count = Main-Do -accfile $args[0] -savePath $args[1] -sql $args[2]
    if($count){Write-Host "完成!成功生成${count}个文件"}
    
    

    其实思路也比较自然:

    1. 读出OLE字段的二进制流
    2. 根据JPG文件头特征定位到JPG文件开始的地方
    3. 截取指定位置的二进制,构造图片流输出即可

    脚本使用说明

    • powershell 5.1下测试通过
    • 将脚本另存为.ps1格式,比如此处为:ExpJPGFromAccdb.ps1,使用32位的powershell程序执行。命令格式(参数间要以空格隔开)如下:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file “D:\XXX\ExpJPGFromAccdb.ps1” “D:\XXX\Prod.accdb” “D:\XXX\exp” “select prodName as name,prodPic as pic from Products”
    • 如果提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。”,请自行下载安装“Access database engine 2010
    • SQL语句强烈建议只返回两个字段,第一个字段以name为别名,作为导出的文件名;第二个字段为数据库中OLE字段
    • 如果SQL语句中没有返回name字段,默认以Row_行号作为文件名进行保存。这时,如果记录数>99999,为了文件名的统一和美观,可以修改{0:d5}{0:d10}再执行
    • 如果不能执行脚本,提示“无法加载文件 D:\XXX\ExpJPGFromAccdb.ps1,因为在此系统上禁止运行脚本……”。请先修改powershell执行策略(参考此处

    执行过程:
    执行过程
    导出结果:
    导出结果

    03 后记

    再提醒一点,该脚本目前仅能处理JPG格式图片,其他格式暂无法识别,有条件的可以自己修改。
    另外,如果有想把上面的代码改为VBA的,也是可以的,建议引用 Microsoft ActiveX data Objects 2.8 以上。

    欢迎留言交流~
    ------END------

    展开全文
  • 图片存入数据库
  • VB图片存储到ACCESS

    2009-02-26 10:53:59
    吧电脑的图片存储到ACCESS里,并能自动创建缩略图,下载后去原程序改掉图片的路径
  • 本工具是因很多网站客户的要求而制作,主要是方便将存放于Access数据库中的二进制图片转换成JPG格式,并批量导出到硬盘中。 广告:本人提供商业版和工业版的进销贴牌加工(OEM)服务
  • VB.NET 使用Access数据库保存和读取图片文件;并连接到datagridview
  • accessvba存图片示例

    2008-07-26 11:54:49
    本人因为需要找了好多地方,才找到这个,只是用access vba编程做的,相信不少初学者朋友用的着
  • 一个Java+Access的药品进销系统软件设计 包括源程序、数据字典、实验报告缩水版、Access数据源背景和按钮应用图片(其实就是copy后自己用图形软件修改的)和部分参考资料。
  • Vb将图片放入Access数据库更新并保存,从标题就能看出本程序主要演示如何将图片存入数据库,这里图片对格式要求很宽,平时的BMP/JPG/GIF都可以保存,打开程序后,浏览到保存数据的数据库,程序会自动索引到图片信息...
  • 现在把图片存到数据库里面,用二进制流
  • Access数据库:在数据库建立一个pic(id设为主键[自动编号],)的表,(pic_name[备注])用于存储上传图片的名字.[此博客全部程序都通过windowds 2003和vs2005测试]Upload.aspx   runat="server" OnClick=
    Access数据库:在数据库建立一个pic(id设为主键[自动编号],)的表,(pic_name[备注])用于存储上传图片的名字.[此博客全部程序都通过windowds 2003和vs2005测试]
    Upload.aspx
    <form id="form1" method="post" enctype="multipart/form-data" runat="server">       <div>               <asp:FileUpload ID="FileUpload1" runat="server" />&nbsp;<asp:Button ID="Button1"                       runat="server" OnClick="Button1_Click" Text="Button" /><br />               <br />               <asp:Image ID="Image1" runat="server" /><br />               <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />             </div>       </form>
    upload.cs
    protected void Page_Load(object sender, EventArgs e)       {               }       protected void Button1_Click(object sender, EventArgs e)       {               string name = FileUpload1.FileName;//获取已上传的文件的名字               string size = FileUpload1.PostedFile.ContentLength.ToString();//获取已上传文件的大小               string type = FileUpload1.PostedFile.ContentType;//获取已上传文件mime内容类型               string type2 = name.Substring(name.LastIndexOf(".")+1);//得到文件的后缀名               string ipath = Server.MapPath("upimg") + "//" + name;//获取文件上传的实际路径               string fpath = Server.MapPath("upfile") + "//" + name;//获取文件上传的实际路径               string wpath = "upimg//" + name;//写到文件的虚拟路径
                  //判断文件格式               if (type2 == "jpg" || type2 == "gif")               {                       FileUpload1.SaveAs(ipath);//将文件保存到path路径里面                       Image1.ImageUrl = wpath;//显示图片                       Label1.Text = "文件名称:" + name + "<br>文件大小:" + size + "文字<br>文件类型是:" + type + "<br>后缀名" + type2 + "<br>实际路径" + ipath + "<br>虚拟路径:" + wpath;                       //把图片名字存到数据库里面                       //定义连接数据库对象                       string conn = "provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("../App_Data/data.mdb");                       OleDbConnection oleConnection = new OleDbConnection(conn);                       oleConnection.Open();                       OleDbCommand myCommand = new OleDbCommand("insert into pic (pic_name) values ('"+ name+"')", oleConnection);                       myCommand.ExecuteNonQuery();                       oleConnection.Close();
                  }               else               {                       Image1.Visible = false;//将图片控件隐藏                       FileUpload1.SaveAs(fpath);//将文件保存到别的文件夹                       Label1.Text = "文件名称:" + name + "<br>文件大小:" + size + "文字<br>文件类型是:" + type + "<br>后缀名" + type2 + "<br>实际路径" + ipath + "<br>虚拟路径:" + wpath;               }       }
     
    Image_show.aspx(用于显示上传以后图片的的页面)
    <form id="form1" runat="server">     <div>         <asp:DataList ID="DataList1" runat="server" Font-Bold="False" Font-Italic="False"             Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Left"             RepeatDirection="Horizontal">             <ItemTemplate>             <a href="pro_show.aspx?id=<%# DataBinder.Eval(Container.DataItem,"id") %>">                 <img border="0" src="admin/upimg/<%# DataBinder.Eval(Container.DataItem,"pic_name") %>" />             </a>             </ItemTemplate>         </asp:DataList></div>     </form>
    Image_show.aspx(cs)
    protected void Page_Load(object sender, EventArgs e)       {               //创建连接数据库字符串               string conn = "provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("App_Data/test.mdb");               OleDbConnection oleConnection = new OleDbConnection(conn);               try               {                       //打开数据库连接                       oleConnection.Open();                       OleDbCommand cmd = new OleDbCommand("select * from pic", oleConnection);                       OleDbDataAdapter dpt = new OleDbDataAdapter(cmd);                       DataSet ds = new DataSet();                       dpt.Fill(ds);                       DataList1.DataSource = ds;                       DataList1.DataBind();               }               finally               {                       //关闭数据库                       oleConnection.Close();               }       }
    pro_show.aspx(点击图片以后,显示图片以及文字介绍)
    <form id="form1" runat="server">       <div>               <asp:Label ID="Label1" runat="server" Text="Label" Width="142px"></asp:Label><asp:DataList ID="DataList1" runat="server">                       <ItemTemplate>                                 <img border="0" src="admin/upimg/<%# DataBinder.Eval(Container.DataItem,"pic_name") %>" />                       </ItemTemplate>               </asp:DataList></div>       </form>
    pro_show.cs
    protected void Page_Load(object sender, EventArgs e)       {               string AuthorID = Request["id"].ToString();               //创建连接数据库字符串               string conn = "provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("App_Data/test.mdb");               OleDbConnection oleConnection = new OleDbConnection(conn);
                  OleDbCommand cmd = new OleDbCommand("select * from pic where [id]=" + AuthorID, oleConnection);               //打开数据库连接               oleConnection.Open();               try               {                       OleDbDataAdapter dpt = new OleDbDataAdapter(cmd);                       DataSet ds = new DataSet();                       dpt.Fill(ds);                       DataList1.DataSource = ds;                       DataList1.DataBind();
                          OleDbDataReader dr = cmd.ExecuteReader();                       if (dr.Read())                       {                               Label1.Text = dr["introduced"].ToString();                       }
                  }               catch (Exception error)               {                       Response.Write(error.ToString());               }               finally               {                       oleConnection.Close();               }
          }
    展开全文
  • 本工具由vb开发,下载后如果提示ocx,请先安装运行环境再执行即可。
  • Access中存取图片

    2007-05-22 17:40:00
     存图片到数据库中  FileStream fs = new FileStream(@"C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Blue hills.jpg",  FileMode.Open);  BinaryReader br = new ...

    连接数据库           

    string source = @"Provider=Microsoft.Jet.OLEDB.4.0;
                    Data Source=C:/Documents and Settings/tester/Desktop/db.mdb;Persist Security Info=False";
    OleDbConnection conn = new OleDbConnection(source);
    conn.Open();

     存图片到数据库中

                FileStream fs = new FileStream(@"C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Blue hills.jpg",
                    FileMode.Open);
                BinaryReader br = new BinaryReader(fs);
                byte[] aaa = new byte[fs.Length];
                br.Read(aaa, 0, (int)fs.Length);
              
                string operate = "insert into student(name, photo) values(@aaa,@bbb);";
                OleDbCommand cmd = new OleDbCommand(operate, conn);
                cmd.Parameters.AddWithValue("@aaa","ddd");
                cmd.Parameters.AddWithValue("@bbb", aaa);
                br.Close();
                fs.Close();
                cmd.ExecuteNonQuery();

    取出图片

                string operate = "Select photo from student where name = 'ddd'";
                OleDbCommand cmd = new OleDbCommand(operate, conn);
                    byte[] b = (byte[])cmd.ExecuteScalar();
                    MemoryStream ms = new MemoryStream(b, true);
                    ms.Write(b, 0, b.Length);
                    Bitmap bitmap = new Bitmap(ms);
                    this.pictureBox1.Image = (Image)bitmap;

    展开全文
  • 我最近做了关于access数据库的读取。da
  • 最近需要用数据库管理上千张甚至更多的图片,在发愁使用SQL Server数据库还是Access数据库,考虑的问题主要有以下几点: 1.用SQL Server和Access存储上千张图片,他们所占存储空间大小比较。 2.用SQL Server和...
  • Sql数据库可以存放图片这是以前听过,但是一直都没相信的事情,这阵子由于工作需求,遍开始尝试存取,在网上找了很多方法,试了都是可以,但是却始终取不出来,研究了两天,最终实现了,现将代码共享出来,大家...
  • 下边是一个将图片以二进制文件形式Access数据库的名为Insert_Photo_Record的类: 由于这个类值负责完成插入图片,所以没有为它书写方法,它的所有工作在构造函数中完成。下边是代码,会在需要注释的地方添加注释...
  • 利用C#从Access数据库中存取图片

    千次阅读 2011-04-24 13:42:00
    FileStream fs = new FileStream(label1.Text, FileMode.Open, FileAccess.Read); byte[] data = new byte[fs.Length]; fs.Read(data, 0, data.Length); fs.Close(); OleDbCommand command = new ...
  • 本文通过对ATM机的模拟项目,使用了access数据库连接,设置背景图片,等附加功能。项目中主要实现的是查询余额,存钱,取钱,目前没有写出转账功能,如有需要,请在下文评论。
  • 将JPG,BMP,PNG图片插入到ACCESS数据库,Embarcadero RAD Studio XE6编译通过。 C/C++ code ? 1 2 #include  #include  C/C++ code ? ...
  • 不好意思忘记是转帖那位网友... 下面是一个简单的演示Access数据库字段名称 数据类型编号 自动编号pic OLE 对象Public Class Form1 Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Dat
  • access_token session甚至超时时间   自定义菜单   删除菜单 自定义菜单推送 接收消息 MsgType 消息类型,event Event 事件类型,CLICK EventKey 事件KEY值,与自定义菜单...
  • 如何将图片保存到SqlServer、Oracle、Access数据库中  首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步 1.将图片转换为二进制数组(byte[]...
  • 如何将图片保存到SqlServer、Oracle、Access数据库中。 首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换为二进制数组(byte[]);2.把转换后的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,485
精华内容 6,594
关键字:

access存图片