国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

數(shù)據(jù)庫如何存取圖片?

網(wǎng)友解答: 數(shù)據(jù)庫存圖片的方式以下兩種:在數(shù)據(jù)庫中存儲(chǔ)圖片文件的文件名或存儲(chǔ)路徑(本地路徑或者網(wǎng)絡(luò)路徑)這是最常用的方式,即是將圖片的存儲(chǔ)的完整路徑或文件名以字符串的方式存入到數(shù)據(jù)庫中,

網(wǎng)友解答:

數(shù)據(jù)庫存圖片的方式以下兩種:

在數(shù)據(jù)庫中存儲(chǔ)圖片文件的文件名或存儲(chǔ)路徑(本地路徑或者網(wǎng)絡(luò)路徑)

這是最常用的方式,即是將圖片的存儲(chǔ)的完整路徑或文件名以字符串的方式存入到數(shù)據(jù)庫中,讀取效率高、而且便于維護(hù)。實(shí)現(xiàn)的方法也比較簡單,拿最常見的使用場景來說吧,比如用戶注冊時(shí),需要他上傳了一張照片,常見做法就是使用文件控件FileUpload讓用戶選擇電腦的上面的圖片,然后將其選擇的圖片所在的路徑及文件名獲取,將文件上傳后同時(shí)將文件名保存到數(shù)據(jù)庫對應(yīng)的表中,顯示圖片時(shí)只需要從數(shù)據(jù)庫中獲取文件名并構(gòu)造完整路徑即可。

ASP.NET

代碼如下:

//獲取FileUpload控件選取圖片后的文件路徑

strng filepath=FileUpload1.PostedFile.FileName;

//獲取圖片文件名,即從圖片路徑字符串中獲取最后的那段

string filename=filepath.Substring(filepath.LastIndexOf("")+1);

//然后執(zhí)行文件上傳,將文件保存到服務(wù)器指定的目錄,如在程序目錄下建立一個(gè)PIC文件夾保存文件

FileUpload1.PostedFile.SaveAs(Server.MapPath("PIC/")+filename);

上傳成功后,將文件名filename字符串插入數(shù)據(jù)庫即可。

顯示時(shí)將filename從數(shù)據(jù)取出,用Image1.ImageUrl="PIC/"+filename 顯示。

將圖片文件轉(zhuǎn)為二進(jìn)制文件流保存到數(shù)據(jù)庫,顯示時(shí)再二進(jìn)制轉(zhuǎn)為文件

這種方式很少用,因?yàn)閳D片包含的信息比較多,轉(zhuǎn)為二進(jìn)制后存儲(chǔ)的內(nèi)容大,占用空間,而且需要轉(zhuǎn)換,費(fèi)時(shí)好資源。

保存圖片的 核心代碼如下:

//文件路徑

string picturePath = @"D:1.jpg";

//創(chuàng)建FileStream對象

FileStream fs = new FileStream(picturePath, FileMode.Open, FileAccess.Read);

//聲明Byte數(shù)組

Byte[] mybyte = new byte[fs.Length];

//讀取數(shù)據(jù)

fs.Read(mybyte, 0, mybyte.Length);

fs.Close();

//轉(zhuǎn)換成二進(jìn)制數(shù)據(jù) mybyte 保存到數(shù)據(jù)庫

SqlParameter prm = new SqlParameter

("@blobdata", SqlDbType.VarBinary, mybyte.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, mybyte);

command.Parameters.Add(prm);

//打開數(shù)據(jù)庫連接

connection.Open();

command.ExecuteNonQuery();

connection.Close();

讀取圖片的核心代碼如下:

//打開數(shù)據(jù)庫連接

connection.Open();

//創(chuàng)建SQL語句

string sql = "select BLODID,BLOBData from Images order by BLODID";

//創(chuàng)建SqlCommand對象

SqlCommand command = new SqlCommand(sql, connection);

//創(chuàng)建DataAdapter對象

SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

//創(chuàng)建DataSet對象

DataSet dataSet = new DataSet();

dataAdapter.Fill(dataSet, "BLOBTest");

int c = dataSet.Tables["BLOBTest"].Rows.Count;

if (c 0)

{

Byte[] mybyte = new byte[0];

mybyte = (Byte[])(dataSet.Tables["BLOBTest"].Rows[c - 1]["BLOBData"]);

MemoryStream ms = new MemoryStream(mybyte);

//顯示圖片

pictureBox1.Image = Image.FromStream(ms);

}

connection.Close();

網(wǎng)友解答:

這涉及到字段類型的問題,如果使用二進(jìn)制類型的字段就可以存放圖片字段了!

我想題主要問的是如何將圖片寫入到數(shù)據(jù)庫吧,這確實(shí)是個(gè)問題,文件是流,那寫入也得使用流了,這就要求數(shù)據(jù)庫驅(qū)動(dòng)提供流寫入方式了,還好大多驅(qū)動(dòng)都實(shí)現(xiàn)了方法,比如JDBC,ODBC等,實(shí)在太多了,不過某些框架不提供功能!

標(biāo)簽: