1、首先可以存儲圖片鏈接,設(shè)置圖片鏈接字段,如下圖所示。
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出山陽免費(fèi)做網(wǎng)站回饋大家。
2、接著直接將圖片的鏈接添加到SQL數(shù)據(jù)表的字段里即可,如下圖所示。
3、或者用二進(jìn)制存儲圖片字段,在SQL Server數(shù)據(jù)庫中先制作成image字段。
4、接著在后臺通過代碼形式,將圖片轉(zhuǎn)化為二進(jìn)制,如下圖所示。
5、得到二進(jìn)制數(shù)據(jù)后,則可通過sql語句插入到數(shù)據(jù)表中。
6、數(shù)據(jù)表即可存儲了圖片字段,將二進(jìn)制轉(zhuǎn)化為圖片。
呵呵,這個問題我喜歡。以前我一直也存在這樣的疑問。
既然存在IMAGE類型,為什么不能存儲圖片呢?
后來查了很多資料,都發(fā)現(xiàn)很避諱直接回答這問題。
這是我一點(diǎn)心得,只是我自己理解的。
存儲圖片在SQL中不如設(shè)置一個NVARCHAR來存儲地址好些。因?yàn)樵谡{(diào)用數(shù)據(jù)庫時,調(diào)用一條字段來讀取地址,比直接從數(shù)據(jù)庫中調(diào)出大字節(jié)的字段速度快很多。
如果真的想用SQL來存儲圖片,那我知道的,可以在不同的語言中,以不同的方式來實(shí)現(xiàn)。有C#,DEPHIN,VB都可以。但是寫成一個過程來在應(yīng)用程序中實(shí)現(xiàn)的。
不知道我說的對你有幫助沒。謝謝了
數(shù)據(jù)保存是:
1、打開SqlServer數(shù)據(jù)庫,選中要備份的數(shù)據(jù)庫,右選擇任務(wù),點(diǎn)擊備份。
2、輸入數(shù)據(jù)集名稱,選擇備份路徑,點(diǎn)擊確定就完成了數(shù)據(jù)庫的備份。
3、右鍵選擇任務(wù),點(diǎn)擊還原,選擇數(shù)據(jù)庫。
4、選擇之前備份的數(shù)據(jù)庫,點(diǎn)擊確定。
5、至此SqlServer備份還原的操作就已完成。
1.將圖片以二進(jìn)制存入數(shù)據(jù)庫
//保存圖片到數(shù)據(jù)庫
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.讀取二進(jìn)制圖片在頁面顯示
//讀取圖片
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.設(shè)置Image控件顯示從數(shù)據(jù)庫中讀出的二進(jìn)制圖片
---------------------------------------------
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顯示讀出的二進(jìn)制圖片
//樣板列
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;
}
}
干嘛要存圖片啊,這個需要把圖片轉(zhuǎn)化為文件流,然后存儲字符串,取出來的時候,需要再轉(zhuǎn)化為圖片流,當(dāng)然這個需要大字段來存儲,影響效率,不符合設(shè)計(jì)優(yōu)化的準(zhǔn)則
1、使用備份操作備份成bak文件,然后保存bak文件到U盤。以后恢復(fù)就使用bak文件進(jìn)行恢復(fù)。在企業(yè)管理器下,選中數(shù)據(jù)庫名,右鍵所有任務(wù)下有備份操作。
2、在安裝文件夾下的Microsoft SQL Server-MSSQL-Data里。有關(guān)數(shù)據(jù)庫名的兩個文件,一個是mdf格式的,還有一個ldf格式的。一起復(fù)制出去。恢復(fù)必須在安裝SQL Server的機(jī)器上,而且先要把這兩個文件附加進(jìn)去以后才能訪問。