重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先可以存储图片链接,设置图片链接字段,如下图所示。
公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出山阳免费做网站回馈大家。
2、接着直接将图片的链接添加到SQL数据表的字段里即可,如下图所示。
3、或者用二进制存储图片字段,在SQL Server数据库中先制作成image字段。
4、接着在后台通过代码形式,将图片转化为二进制,如下图所示。
5、得到二进制数据后,则可通过sql语句插入到数据表中。
6、数据表即可存储了图片字段,将二进制转化为图片。
呵呵,这个问题我喜欢。以前我一直也存在这样的疑问。
既然存在IMAGE类型,为什么不能存储图片呢?
后来查了很多资料,都发现很避讳直接回答这问题。
这是我一点心得,只是我自己理解的。
存储图片在SQL中不如设置一个NVARCHAR来存储地址好些。因为在调用数据库时,调用一条字段来读取地址,比直接从数据库中调出大字节的字段速度快很多。
如果真的想用SQL来存储图片,那我知道的,可以在不同的语言中,以不同的方式来实现。有C#,DEPHIN,VB都可以。但是写成一个过程来在应用程序中实现的。
不知道我说的对你有帮助没。谢谢了
数据保存是:
1、打开SqlServer数据库,选中要备份的数据库,右选择任务,点击备份。
2、输入数据集名称,选择备份路径,点击确定就完成了数据库的备份。
3、右键选择任务,点击还原,选择数据库。
4、选择之前备份的数据库,点击确定。
5、至此SqlServer备份还原的操作就已完成。
1.将图片以二进制存入数据库
//保存图片到数据库
protected void Button1_Click(object sender, EventArgs e)
{
//图片路径
string strPath = "~/photo/03.JPG";
string strPhotoPath = Server.MapPath(strPath);
//读取图片
FileStream fs = new System.IO.FileStream(strPhotoPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " INSERT INTO personPhoto(personName, personPhotoPath, personPhoto) ";
strComm += " VALUES('wangwu', '" + strPath + "', @photoBinary )";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary,photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
myComm.ExecuteNonQuery();
myConn.Close();
}
2.读取二进制图片在页面显示
//读取图片
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " SELECT personPhoto FROM personPhoto WHERE personName='wangwu' ";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myConn.Open();
SqlDataReader dr = myComm.ExecuteReader();
while (dr.Read())
{
byte[] photo = (byte[])dr["personPhoto"];
this.Response.BinaryWrite(photo);
}
dr.Close();
myConn.Close();
或
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='11' ", myConn);
DataSet myds = new DataSet();
myConn.Open();
myda.Fill(myds);
myConn.Close();
byte[] photo = (byte[])myds.Tables[0].Rows[0]["personPhoto"];
this.Response.BinaryWrite(photo);
3.设置Image控件显示从数据库中读出的二进制图片
---------------------------------------------
SqlConnection myConn = new SqlConnection("Data Source=192.168.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='11' ", myConn);
DataSet myds = new DataSet();
myConn.Open();
myda.Fill(myds);
myConn.Close();
byte[] photo = (byte[])myds.Tables[0].Rows[0]["personPhoto"];
//图片路径
string strPath = "~/photo/wangwu.JPG";
string strPhotoPath = Server.MapPath(strPath);
//保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(photo);
bw.Close();
3.显示图片
this.Image1.ImageUrl = strPath;
4.GridView中ImageField以URL方式显示图片
--------------------------
asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
Columns
asp:BoundField DataField="personName" HeaderText="姓名" /
asp:ImageField DataImageUrlField="personPhotoPath"
HeaderText="图片"
/asp:ImageField
/Columns
/asp:GridView
5.GridView显示读出的二进制图片
//样板列
asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"
Columns
asp:BoundField DataField="personName" HeaderText="姓名" /
asp:ImageField DataImageUrlField="personPhotoPath"
HeaderText="图片"
/asp:ImageField
asp:TemplateField HeaderText="图片"
ItemTemplate
asp:Image ID="Image1" runat="server" /
/ItemTemplate
/asp:TemplateField
/Columns
/asp:GridView
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex 0)
return;
// System.ComponentModel.Container
string strPersonName = (string)DataBinder.Eval(e.Row.DataItem, "personName");
Image tmp_Image = (Image)e.Row.Cells[2].FindControl("Image1");
if (!System.Convert.IsDBNull(DataBinder.Eval(e.Row.DataItem, "personPhoto")))
{
//
byte[] photo = (byte[])DataBinder.Eval(e.Row.DataItem, "personPhoto");
//图片路径
string strPath = "~/photo/" + strPersonName.Trim() + ".JPG";
string strPhotoPath = Server.MapPath(strPath);
//保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath, FileMode.OpenOrCreate));
bw.Write(photo);
bw.Close();
//显示图片
tmp_Image.ImageUrl = strPath;
}
}
干嘛要存图片啊,这个需要把图片转化为文件流,然后存储字符串,取出来的时候,需要再转化为图片流,当然这个需要大字段来存储,影响效率,不符合设计优化的准则
1、使用备份操作备份成bak文件,然后保存bak文件到U盘。以后恢复就使用bak文件进行恢复。在企业管理器下,选中数据库名,右键所有任务下有备份操作。
2、在安装文件夹下的Microsoft SQL Server-MSSQL-Data里。有关数据库名的两个文件,一个是mdf格式的,还有一个ldf格式的。一起复制出去。恢复必须在安装SQL Server的机器上,而且先要把这两个文件附加进去以后才能访问。