① 怎样把图片存入SQL数据库表中

将图片存入SQL数据库中一般分两种情况

一、把图片转换成二进制形式存储在数据库中

一般数据库提供一个二进制字段来存储二进制数据。如SQLServer中的BINARY,VARBINARY;

1、BINARY数据类型用于存储二进制数据。其定义形式为BINARY(n),n表示数据的长度,取值为1到8000。在使用时必须指定BINARY类型数据的大小,至少应为1个字节。BINARY类型数据占用n+4个字节的存储空间。在输入数据时必须在数据前加上字符“0X”作为二进制标识,如:要输入“abc”则应输入“0xabc”。若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X”后添加一个0,如上述的“0xabc”会被系统自动变为“0x0abc”。

2、VARBINARY数据类型的定义形式为VARBINARY(n)。它与BINARY类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。当BINARY数据类型允许NULL值时,将被视为VARBINARY数据类型。

一般情况下,由于BINARY数据类型长度固定,因此它比VARBINARY类型的处理速度快

二、图片存储在磁盘上,数据库字段中保存的是图片的路径

存储路径存储路径字符串即可,sql中可以使用varchar/nvarchar;

总结:将图片文件直接以二进制存储数据库需要将图片提前转为二进制数据,以存储图片物理路径的方式需要将图片文件放置指定位置,这都需要配合不同的编程语言实现;

以C#为例:

//点击按钮执行存入
privatevoidbtnWrite_Click(objectsender,EventArgse)
{
OpenFileDialogofd=newOpenFileDialog();
ofd.Filter="*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";

if(ofd.ShowDialog()==DialogResult.OK)
{
stringfilePath=ofd.FileName;//图片路径
FileStreamfs=newFileStream(filePath,FileMode.Open);//读取图片流
byte[]imageBytes=newbyte[fs.Length];
BinaryReaderbr=newBinaryReader(fs);
imageBytes=br.ReadBytes(Convert.ToInt32(fs.Length));//图片转换成二进制流

stringstrSql=string.Format("insertinto[SBS].[dbo].[Model]([M_QRCode],[M_Skills])values(@image,'2')");
intcount=Write(strSql,imageBytes);

if(count>0)
{
MessageBox.Show("success");
}
else
{
MessageBox.Show("failed");
}
}
}

//数据库连接和保存图片语句
privateintWrite(stringstrSql,byte[]imageBytes)
{
stringconnStr="DataSource=数据库地址;initialCatalog=SBS;UserID=sa;Password=sa;";

using(SqlConnectionconn=newSqlConnection(connStr))
{
using(SqlCommandcmd=newSqlCommand(strSql,conn))
{
try
{
conn.Open();//打开数据库链接
SqlParametersqlParameter=newSqlParameter("@image",SqlDbType.Image);
sqlParameter.Value=imageBytes;
cmd.Parameters.Add(sqlParameter);
introws=cmd.ExecuteNonQuery();//执行插入操作
returnrows;
}
catch(Exceptione)
{
throw;
}
}
}
}

② 怎样用数据库在一个字段中存入多张图片信息

例如,要存入8张图片信息,操作方法和步骤如下:

1、首先,扩展可编程性下面的“内用户定义数据类型容”为空,如下图所示。