如何在sql server中存储图片

在sqlserver中存储图片只能用语言代码实现吗?能不能给出具体的代码例子或过程,万分感谢!!... 在sql server中存储图片只能用语言代码实现吗?能不能给出具体的代码例子或过程,万分感谢!! 展开
 我来答
顾倾城shine
高粉答主

2020-04-28 · 说的都是干货,快来关注
知道答主
回答量:394
采纳率:100%
帮助的人:12.6万
展开全部

1、首先可以存储图片链接,设置图片链接字段,如下图所示。

2、接着直接将图片的链接添加到SQL数据表的字段里即可,如下图所示。

3、或者用二进制存储图片字段,在SQL Server数据库中先制作成image字段。

4、接着在后台通过代码形式,将图片转化为二进制,如下图所示。

5、得到二进制数据后,则可通过sql语句插入到数据表中。

6、数据表即可存储了图片字段,将二进制转化为图片。

今至电子科技有限公司
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整... 点击进入详情页
本回答由今至电子科技有限公司提供
lackyhuang
推荐于2017-11-28 · TA获得超过633个赞
知道小有建树答主
回答量:813
采纳率:0%
帮助的人:860万
展开全部
两种方式
1、存放图片路径
2、转换成2进制流(不过这样的话将很占用数据库空间)
存路径的方式就很简单了,下面着重给出转换成2进制流的存入以及读取方法。
存入:
string FilePath="";
OpenFileDialog oFileDialog=new OpenFileDialog();
if(oFileDialog.ShowDialog()==DialogResult.OK)
{
FilePath=oFileDialog.FileName;
FileStream fs=new FileStream(FilePath,FileMode.Open,FileAccess.Read);
byte[] bytes=new byte[fs.Length];
string sql = "insert PicSave(FileName,FileType,FileData)values(@FN,@FT,@MF)";
SqlCommand com = new SqlCommand(sql,this.sqlCon);
SqlParameter FN = new SqlParameter("@FN",SqlDbType.VarChar);
FN.Value = "泳装妹妹";
com.Parameters.Add(FN);
SqlParameter FT = new SqlParameter("@FT",SqlDbType.VarChar);
FT.Value = "JPG";
com.Parameters.Add(FT);
SqlParameter MF = new SqlParameter("@MF",SqlDbType.Image);
MF.Value = bytes;
com.Parameters.Add(MF);
com.CommandType = CommandType.Text;

sqlCon.ConnectionString = this.conStr;

try
{
sqlCon.Open();
com.ExecuteNonQuery();
sqlCon.Close();
MessageBox.Show("存入成功!");
}
catch(Exception ex)
{
throw ex;
}
finally
{
sqlCon.Close();
}

}
读出:
int id=Convert.ToInt32(this.textBox1.Text.Trim());
string sql = "select FileData from PicSave where id ="+id+" ";

sqlCon.ConnectionString = this.conStr;

SqlCommand readComm = new SqlCommand(sql,this.sqlCon);

SqlDataReader dr = null;

FileStream fs = null;

BinaryWriter bw = null;

int bufferSize = 100;

byte[] outbyte = new byte[bufferSize];

long retval;

long startIndex = 0;

try
{
sqlCon.Open();
dr = readComm.ExecuteReader();
while(dr.Read())
{
fs = new FileStream("TakeOut.jpg",FileMode.OpenOrCreate,FileAccess.Write);

bw = new BinaryWriter(fs);

retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);

while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush();

startIndex += bufferSize;
retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
}
bw.Write(outbyte, 0, (int)retval - 1);
bw.Flush();
bw.Close();
fs.Close();
Image im = Image.FromFile("TakeOut.jpg");

this.pictureBox1.Image = im;
}
sqlCon.Close();
}
catch(Exception ex)
{
throw ex;
}
finally
{
sqlCon.Close();
bw.Close();
fs.Close();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2ca1c0f24
2010-01-29 · TA获得超过2036个赞
知道大有可为答主
回答量:4364
采纳率:0%
帮助的人:3394万
展开全部
VB在SQL Server 2000中存储图片,其实不是特别困难的。
1、数据表必须有数据类型是Image类型的字段,这个字段是可以存储图形的二进制数据的,存储量可达2G字节。
2、可想,存储图形二进制数据,必须就原来的图形转换为二进制数据,这是存储图形数据的关键。
3、存储的二进制图形,如果要读取,必须就二进制数据转换为图形数据。

上面是VB在SQL Server 2000中存储图片的必须要求。但是也可以在数据表存储图形的路径,这样比较简单,但是不安全,我们就以存储二进制数据讨论吧。

一、存储图形的关键语句:
Dim mst As New ADODB.Stream 'Stream 对象是进行二进制数据操作对象
mst.Type = abTypeBinary
mst.Open
If 图片的路径和文件名变量(需要用其他方法获得)<> "" Then
mst.LoadFromFile 图片的路径和文件名变量
End If
rs("存储二进制数据的字段") = mst.Read

二、读取存储的二进制数据的关键语句:
Dim mst As New ADODB.Stream
mst.Type = abTypeBinary
mst.Open
mst.Write rs("存储二进制数据的字段")
mst.SaveToFile App.Path & "/" & list1.Text,abSaveCreateOverWrite
Picture1.Picture = LoadPicture(App.Path & "/" & List1.Text)
mst.Close '别忘了关闭对象!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
67918334
2010-01-29 · TA获得超过726个赞
知道小有建树答主
回答量:839
采纳率:0%
帮助的人:594万
展开全部
最好不要把图片存在库里。这样你的库要不到好久会很大很大。。。。。
是非常不明智的做法。
最好是把图片放到文件夹里。然后把路径放到库里。

首先SQL表字段的类型设置为IMAGE类型
然后你用 qsc800528 回答的代码 就可以了。他写的是存储过程。你可以在程序里把图片转成二进制 然后存进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
horsoner
2010-01-29 · TA获得超过238个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:196万
展开全部
这个只能说是理论研究,实际应用中几乎没有这样做的,一般都是在数据库中设置一个字段存储图片的相对位置,而图片还是存储在网站的某个文件夹里面,而且最好还是把图片按照提交的日期来分文件夹存储,方便以后维护,具体看图片的数量,如果不大可以直接把年份作文件夹,如果图片更新很频繁,可以考虑用年月甚至年月日来做文件夹,这样分类对后期运营维护有很大的好处。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式