卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

網(wǎng)友解答:

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

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

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

ASP.NET

代碼如下:

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

strng filepath=FileUpload1.PostedFile.FileName;

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

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

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

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

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

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

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

這種方式很少用,因為圖片包含的信息比較多,轉為二進制后存儲的內容大,占用空間,而且需要轉換,費時好資源。

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

//文件路徑

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();

//轉換成二進制數(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)友解答:

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

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

標簽: