1、可以建立一个字段 将其数据类型改为OLE对象 然后直接粘贴
2、或用将转换为二进制 存入数据库中
3、用普通字段放一个路径 指向 直接让显示
第三种方法最好了 直接存入数据库,数据库会很大的。。。
sql中有数据类型image。在sql2005帮助中对此解释如下:
Microsoft SQL Server 2005 将超过 8,000 个字符的字符串和大于 8,000 字节的二进制数据存储为名为 text 和
image 的特殊数据类型。超过 4,000 个字符的 Unicode 字符串存储为 ntext 数据类型。
例如,您需要将一个大型客户信息文本文件 (txt) 导入 SQL Server
数据库。应将这些数据作为一个数据块存储起来,而不是集成到数据表的多个列中。为此,可以创建一个 text
数据类型的列。但是,如果必须存储公司徽标,它们当前存储为标记图像文件格式 (TIFF) 图像 (tif) 且每个图像的大小为 10 KB,则可以创建一个
image 数据类型的列。
如果要存储的文本数据是 Unicode 格式,那么应使用 ntext
数据类型。例如,一个为国际客户创建的套用信函很可能包含用于各种不同语言的国际拼写和字符。这种数据应存储在 ntext 列中。
每个 text 和 ntext 数据值都具有排序规则。排序规则定义各种属性,例如比较规则以及是否区分大小写或重音。text
值的排序规则还指定了代码页,代码页定义用于表示每个字符的位模式。每个 ntext 值均使用对所有排序规则都相同的 Unicode
代码页。每个数据库都有默认的排序规则。当创建 text 或 ntext 列时,除非使用 COLLATE
子句指定了特定的排序规则,否则将为其指定数据库的默认排序规则。当组合或比较两个具有不同排序规则的 text 或 ntext
值时,根据排序规则的优先规则来确定 *** 作所使用的排序规则。
image 数据中的数据被存储为位串,SQL Server 不对其进行解释。对 image
列中的数据的任何解释都必须由应用程序来完成。例如,应用程序可以用 BMP、TIFF、GIF 或 JPEG 格式将数据存储在 image 列中。从 image
列中读取数据的应用程序必须能够识别数据的格式并正确显示数据。image 列所做的全部工作就是提供一个位置,以存储组成图像数据值的位流。
通常情况下,text、ntext 或 image 字符串是存储在数据行外的大型(最高可达 2 GB)字符或二进制字符串。数据行只包括一个
16 字节的文本指针,该指针指向一个树的根节点,该树由映射存储串片段的页的内部指针构成。
使用 SQL Server,可将中小型 text、ntext 和 image
值存储在一个数据行中,从而提高查询访问这些值的速度。
当 text、ntext 或 image 字符串存储在数据行中时,SQL Server
无须访问单独的页或页集合来读写这些字符串。这使得对 text、ntext 或 image 行内字符串的读取几乎与对 varchar、nvarchar 或
varbinary 字符串的读取一样快。
若要在数据行中存储 text、ntext 或 image 字符串,必须先使用 sp_tableoption 存储过程启用 text in
row 选项。
首先建一个数据库,假设为(imgmdb)在其中建一表(pic),表中有两个字段(id,img),id数据类型为"自动编号",img的类型为"OLE对象"
下面用三个文件用来实现功能,connasp是定义数据库连接函数的,upasp用来上传,showasp用来从数据库读取
-------------connasp--------------
<%
dim conn,rs
function getdata(sql)
dbpath="imgmdb"
set conn=serverCreateObject("ADODBconnection")
connstr="provider=Microsoftjetoledb40;data source="&serverMapPath(dbpath)
connopen connstr
set rs=serverCreateObject("ADODBrecordset")
rsopen sql,conn,3,2
end function
sub rsclose()
rsclose()
set rs=nothing
connclose()
set conn=nothing
end sub
%>
---------------upasp---------------
<html>
<body>
<form action="upasp" method="post" enctype="multipart/form-data" >
<input type="file" size="12" name="imgurl" id="imgurl">
<input type="submit" value="upload">
</form>
</body>
</html>
<%
if (requesttotalbytes)>0 then '如果有数据提交,则进行下面的处理
%>
<!--#include file="connasp"-->
<%
formsize=requesttotalbytes
formdata=requestbinaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
sql="select from pic"
getdata(sql)
rsaddnew
rs("img")AppendChunk myData
rsupdate
rsclose()
responseclear
responsewrite "success!"
end if
%>
-------------showasp--------------
<!--#include file="connasp"-->
<%
id=trim(request("id"))
sql="select from pic where id="&id
getdata(sql)
ResponseContentType="image/"
ResponseBinaryWrite rs("img")getChunk(8000000)
rsclose()
%>
上传后就可以通过showaspid=来读取了,你也可以直接将用<img>标签插入其他页面中,如<img src="showaspid=1" />
一般不向数据库插入 而是插入的src 通过src找到然后显示。
<php
session_start();
//array数组中放的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]>2097152){ //大小判断
echo "上传不能大于2M";
echo "<meta >
一般的是上传到网站的某个目录然后把的地址存入数据库 如果非要存的话,就用读取文件的形式,读取的二进制码 $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data))); 然后存入数据库好了。。
你的语句是对的,你可以自己验证,更新UPDATE之后SELECT出数据库字段的值,显示出来人工查看是否异常。
对你这个基本正确的语句,我有两条意见供你参考:一是路劲分隔符号问题,这样的语句里面有\,写在程序里面(不是数据客户端查询)的时候,类C语言的语言(例如PERL、PHP、JAVA等)对字符串里面的\会进行转义,例如\n表示的是回车,对于这样的语言环境,我们要用\\来代替查询语句里面的路径分隔符;当然,某些早期在UNIX平台起家的语言(例如PERL、PHP等),可以使用UNIX的路径分隔符/来代替WINDOWS的\,而且程序代码能在WINDOWS下正确运行。二是BLOB对象问题,如果字段Clicense是一个字符串(也称文本)类,例如CHAR、VARCHAR、TEXT等,那么这个语句只是把文件名存入数据库,显示的的时候取出文件名还需要读取文件内容,如果需要把文件内容存入数据库,那么字段类型需要为对象,而且语句也稍有不同。
以上就是关于在access数据库中如何添加图片全部的内容,包括:在access数据库中如何添加图片、怎么在SQL数据库的表中插入图片SQL2008、如何在ACCESS数据库放入图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)