this.pictureBox1.Image
=
Image.FromStream(this.openFileDialog1.OpenFile());
//获取当前图片的路径
string
path
=
openFileDialog1.FileName.ToString();
//将制定路径的图片添加到FileStream类中
FileStream
fs
=
new
FileStream(path,
FileMode.Open,
FileAccess.Read);
//通过FileStream对象实例化BinaryReader对象
BinaryReader
br
=
new
BinaryReader(fs);
//通过BinaryReader类对象的ReadBytes()方法将FileStream类对象转化为二进制数组
byte[]
imgBytesIn
=
br.ReadBytes(Convert.ToInt32(fs.Length));第二步:
//将图片添加到数据库中
string
sql="insert
into
pic
values(@pic)";
SqlParameter[]
param
=
new
SqlParameter[]
{
new
SqlParameter("@pic",
imgBytesIn)
};
DBHelper.GetExecuteQuery(sql,
param);第三步:
//将图片从数据库中取出
string
sql="select
*
from
pic
where
id=0";
SqlDataReader
reader
=
DBHelper.GetExecuteReader(sql,
null);
MemoryStream
mss
=
null;
⑵ 运用c#+SQL如何建立图片数据库
一般不把图片直接存在数据库中,虽然数据库支持存放二进制数据,一般是存放图片的索引路径,比如规定一个根目录,里面按类存放图片,在数据库中就要建立图片类别表,存放图片类的路径比如
植物|root/植物
动物|root/动物
当然还可以按日期索引,等等,数据库主要是存放图片的索引,通过索引找到记对应图片的实际存放路径
⑶ 怎样往SQL数据库中插入图片,最好举例说明
首先存储图片主要是要保存到一个表内的字段里。要确定保存的字段类型为二进制数组等图片可用的类型,
然后一般的sql工具都能把图片变成二进制序列。到时候直接存入的时候存成
2进制
数列就可以。
等取出的时候用二进制流取出然后做成跟文件,然后拼接上原来存入文件的
扩展名
就是你刚才存入的文件。
⑷ 如何向SQL数据库中插入图片
一般的图片是上传到网站的某个目录然后把图片的地址存入数据库
如果非要存图片的话,就用读取文件的形式,读取图片的二进制码
$data
=
addslashes(fread(fopen($form_data,
"r"),
filesize($form_data)));
然后存入数据库好了。。
⑸ vb加sql的图片数据库怎么弄
'VB/VBA中实现数据库中的文件存取
'示例数据库为ACCESS数据库,用SQL数据库的话,只需要改连接字符串
'
'*************************************************************************
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**
'*************************************************************************
'
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
'ACCESS数据库的连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\My Documents\客户资料1.mdb"
'SQL数据库的连接字符串
iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
"User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
.Open
.LoadFromFile "c:\test.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "表", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("保存文件内容的字段") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End Sub
'从数据库中读取数据,保存成文件
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String
'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=64"
if iRe("img").ActualSize>0 Then
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
.Open
.Write iRe("img")
.SaveToFile "c:\test.doc"
End With
'关闭对象
iStm.Close
End If
iRe.Close
End Sub
⑹ SQL数据库如何在表里插入图片
图片保存在数据库中有两种方式:
1.看一下字段的字段类型,如果是二进制(image)的就要将图片进行二进制转换;
2.如果是字符串型(nvarchar)的,则直接保存图片路径,然后将图片拷到那个路径下即可.
一般图片都是只存路径的,存二进制占数据库空间,会导致数据库过大
⑺ sql数据库中如何存放图片相对路径(不用代码)
1、在打开【SQL Server Managemenet Studio】窗口,在【对象资源管理器】窗口依次站看【数据库】——【新建的数据库】节点。
⑻ SQL数据库中如何存储图片和读取
要看你用哪种语言,但是流程都差不多。都是把图片变成留,然后变成字节数组,然后再保存到数据库里面去。存地址确实是个办法,但是却不实用。
⑼ 怎样把图片存入SQL数据库表中
一、先来熟悉一下将要使用的对象方法:
用来获取上一个页面传 递过来的数据一般是使用Request对象。同样的,我们也可以使用Request对象 来获取上传上来的文件数据,使用的方法是Request.BinaryRead()。
要从数据库中读出来图片的数据显示到网页上面要用到的方法是:Request.BinaryWrite()。
二、在得到了图片的数据,要保存到数据库中的时候,不可以直接使用Insert语句对数据库进行操作,而是要使用ADO的AppendChunk方法。
同样的,读出数据库中的图片数据,要使用GetChunk方法。
各个方法的具体语法如下:
*Request.BinaryRead语法:
variant=Request.BinaryRead(count)
参数
variant
返回值保存着从客户端读取到数据。
count
指明要从客户端读取的数据量大小,这个值小于或者等于使用方法
Request.TotalBytes得到的数据量。
*Request.BinaryWrite语法:
Request.BinaryWritedata
参数
data
要写入到客户端浏览器中的数据包。
*Request.TotalBytes语法:
variant=Request.TotalBytes
参数
variant
返回从客户端读取到数据量的字节数。
*AppendChunk语法
将数据追加到大型文本、二进制数据Field或Parameter对象。
object.AppendChunkData
参数
objectField或Parameter对象
Data变体型,包含追加到对象中的数据。
说明
使用Field或Parameter对象的AppendChunk方法可将长二进制或字符数
据填写到对象中。在系统内存有限的情况下,可以使用AppendChunk方法对长
整型值进行部分而非全部的操作。
*GetChunk语法
返回大型文本或二进制数据Field对象的全部或部分内容。
variable=field.GetChunk(Size)
返回值
返回变体型。
参数
Size长整型表达式,等于所要检索的字节或字符数。
说明
使用Field对象的GetChunk方法检索其部分或全部长二进制或字符数据。
在系统内存有限的情况下,可使用GetChunk方法处理部分而非全部的长整型
值。
GetChunk调用返回的数据将赋给“变量”。如果Size大于剩余的数据,则
GetChunk仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则
GetChunk方法返回Null。
每个后续的GetChunk调用将检索从前一次GetChunk调用停止处开始的数
据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段
的值,ADO将认为已从第一个字段中检索出数据。如果在第一个字段上再次调
用GetChunk方法,ADO将把调用解释为新的GetChunk操作并从记录的起始
处开始读取。如果其他Recordset对象不是首个Recordset对象的副本,则
访问其中的字段不会破坏GetChunk操作。
如果Field对象的Attributes属性中的adFldLong位设置为True,则可
以对该字段使用GetChunk方法。
如果在Field对象上使用Getchunk方法时没有当前记录,将产生错误3021
(无当前记录)。
三、设计数据库,作为测试的数据库结构如下(Access97):
字段名称类型描述
id自动编号主键值
imgOLE对象用来保存图片数据
对于在MSSQLServer7中,对应的结构如下:
字段名称类型描述
idint(Identity)主键值
imgimage用来保存图片数据
四、正式编写纯ASP代码上传部分了,首先,有一个提供给用户的上传界面,可以让用户选择要上传的图片。代码如下(upload.htm):
<html>
<body>
<center>
<formname="mainForm"enctype="multipart/form-data"
action="process.asp"method=post>
<inputtype=filename=mefile><br>
<inputtype=submitname=okvalue="OK">
</form>
</center>
</body>
</html>
注意代码中黑色斜体的部分,一定要在Form中有这个属性,否则,将无
法得到上传上来的数据。
五、接下来,要在process.asp中对从浏览器中获取的数据进行必要的处理,因为在process.asp中获取到的数据不仅仅包含了想要的上传上来的图片的数据,也包含了其他的无用的信息,需要剔除冗余数据,并将处理过的图片数据保存到数据库中,这里以Access97为例。具体代码如下(process.asp):
<%
response.buffer=true
formsize=request.totalbytes
formdata=request.binaryread(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)setconnGraph=server.CreateObject("ADODB.connection")
connGraph.ConnectionString="driver={MicrosoftAccessDriver(*.mdb)};DBQ="&
server.MapPath("images.mdb")&";uid=;PWD=;"
connGraph.Opensetrec=server.createobject("ADODB.recordset")
rec.Open"SELECT*FROM[images]whereidisnull",connGraph,1,3
rec.addnew
rec("img").appendchunkmydata
rec.update
rec.close
setrec=nothing
setconnGraph=nothing
%>
六、这样就把上传来的图片保存到了名为images.mdb的数据库中了,剩下的工作就是要将数据库中的图片数据显示到网页上面了。
一般在HTML中,显示图片都是使用<IMG>标签,也就是<IMGSRC="图片路径">,但是图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个SRC属性除了指定路径外,也可以这样使用哦:
<IMGSRC="showimg.asp?id=xxx">
所以,要做的就是在showimg.asp中从数据库中读出来符合条件的数据,并返回到SRC属性中就可以了,具体代码如下(showimg.asp):
<%
setconnGraph=server.CreateObject("ADODB.connection")
connGraph.ConnectionString="driver={MicrosoftAccessDriver(*.mdb)};DBQ="&
server.MapPath("images.mdb")&";uid=;PWD=;"
connGraph.Open
setrec=server.createobject("ADODB.recordset")
strsql="selectimgfromimageswhereid="&trim(request("id"))
rec.openstrsql,connGraph,1,1
Response.ContentType="image/*"
Response.BinaryWriterec("img").getChunk(7500000)
rec.close
setrec=nothing
setconnGraph=nothing
%>
七、注意在输出到浏览器之前一定要指Response.ContentType="image/*",以便正常显示图片。最后要注意的地方是,我的process.asp中作的处理没有考虑到第一页(upload.htm)中还有其他数据,比如<INPUTtype=tesxtname=userid>等等,如果有这些项目,process.asp就要注意处理掉不必要的数据。