從資料庫讀取圖片
① 如何從sql資料庫內讀取圖片
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
② 從資料庫中讀取圖片是必須的么
資料庫存圖片抄可以節省空間襲,存地址當然更省空間,可是圖片很占資源。另外圖片存資料庫中讀取速度相對快些,讀地址相對慢些。
但是各有各的好處:
存地址,圖片變更方便,什麼時候變直接覆蓋圖片就好了,批量管理比較容易,方便。
存圖片,速度快,省資源,在做產品刪除動作可以一並將圖片刪除,不會像存地址的那種,圖片都殘留在伺服器上了,不過該圖片要更新資料庫,比較麻煩,更多地方要調用資料庫,需統一安排維護,不便時時維護,否則會影響正常訪問。
③ 如何從資料庫中讀取圖片,圖片存在文件夾中
資料庫存的是文件名和路徑,通過這個路徑和文件名來顯示圖片。
④ php中如何從資料庫中讀取圖片
<?php
//將圖片存進資料庫再讀出,注意存儲圖片的欄位類型必須為blob
$user=』root』;
$password=』root』;
$db=』test』;
$connect=mysql_connect(『localhost』,$user,$password);
mysql_set_charset(『utf8′,$connect);
mysql_select_db($db);
$photo = 「0x」.bin2hex(file_get_contents(「./test.jpg」));
$sql=」INSERT INTO `test`.`test` (`photo`) VALUES ($photo);」;//$photo不需要用引號,切記
mysql_query($sql);
//$result=mysql_query(「SELECT *
//FROM `test`
//LIMIT 0 , 30〃);
//$img=mysql_fetch_array($result);
//echo $img['photo'];
?>
⑤ 如何將資料庫的圖片讀取到頁面中
一般來說資料庫存儲的圖片應該都是圖片地址吧,
然後讀取這條圖片地址的記錄,
在頁面中用<img src="讀取出來的地址"/>
應該就可以顯示出來啦
⑥ VS中怎麼從資料庫讀取圖片
publicDataSetds=null;
publicSqlDataAdaptersda=null;
publicstaticSqlConnectionconn=null;
//連接資料庫
publicvoidOpenLink()
{
conn=newSqlConnection();
conn.ConnectionString="Server=192.168.1.5;uid=sa;pwd=555;dataBase=資料庫名";
try
{
conn.Open();
}
catch
{
MessageBox.Show("連接資料庫丟失!");
}
}
//查詢數據表
publicvoidlink(Stringsql)
{
if(conn!=null)
{
ds=newDataSet();
sda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(sql,conn);
SqlCommandBuilderbuilder=newSqlCommandBuilder(sda);
sda.Fill(ds);
}
}
publicvoidPix(PictureBoxpx,Stringname)//顯示圖片
{
Stringsql="Select識別碼from下單表where訂票人='"+name+"'";
byte[]imagebytes=null;
SqlCommandcom=newSqlCommand(sql,conn);
SqlDataReaderdr=com.ExecuteReader();
while(dr.Read())
{
imagebytes=(byte[])dr.GetValue(0);
}
MemoryStreamms=newMemoryStream(imagebytes);
Bitmapbmpt=newBitmap(ms);
px.Image=bmpt;
px.SizeMode=PictureBoxSizeMode.StretchImage;
}
放工程啟動的時候就OpenLink(),把上面代碼存儲在類文件裡面,Pix
()函數就是顯示圖片。
⑦ 如何從資料庫中讀取圖片到picturebox中
用SqlDataReader讀取圖片數據,放到流中,Image對象從流載入數據到PictureBox。有三種方式讀取圖片,這三種方式都要求將SqlDataReader的默認行為設置為SequentialAccess。
1使用GetSqlBytes檢索varbinary(max)數據:
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
Stream s = new MemoryStream(); //創建一個以內存為後備存儲的流
SqlCommand command = connection.CreateCommand();
SqlDataReader reader = null;
try
{
command.CommandText = "SELECT LastName,Photo FROM dbo.Employees " +
" WHERE LastName=@LastName";
command.CommandType = CommandType.Text;
//聲明參數並賦值
SqlParameter parameter = new SqlParameter("@LastName", SqlDbType.NVarChar, 20);
parameter.Value = lastName;
command.Parameters.Add(parameter);
connection.Open();
//修改DataReader的默認行為,SequentialAccess按順序接收數據並立即載入
//CloseConnection指明關閉DataReader時,對資料庫的連接也關閉
reader = command.ExecuteReader(
CommandBehavior.SequentialAccess|CommandBehavior.CloseConnection);
if (reader.HasRows)
{
while (reader.Read())
{
//SequentialAccess要求按順序接收數據,先接受reader[0]
this.label1.Text = reader[0].ToString();
if (reader.IsDBNull(1)) //若列值為空返回
return;
else
{
//使用reader.GetSqlBytes獲取圖像數據
SqlBytes bytes = reader.GetSqlBytes(1);
using (Bitmap proctImage = new Bitmap(bytes.Stream))
{
//以gif格式保存在Stream流並顯示
proctImage.Save(s, System.Drawing.Imaging.ImageFormat.Gif);
this.pictureBox1.Image = System.Drawing.Image.FromStream(s);
} } }
}
else
MessageBox.Show("No records returned.");
2使用GetSqlBinary檢索數據:
reader = command.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
SqlBinary binaryStream = reader.GetSqlBinary(0);
3使用GetValue檢索數據:
while (reader.Read())
{
//如果從 varbinary(max) 列讀數據
byte[] binaryData = (byte[])reader.GetValue(0);
//如果從 varchar(max)或nvarchar(max) 列讀數據
String stringData = (String)reader.GetValue(1);
}
詳細代碼見我的「王一博客」danyaody
⑧ 如何才能往資料庫里讀取圖片數據或者從資料庫里讀圖片
摘 要 本文以VB6與Access97作為開發工具,介紹了圖像在資料庫中的存儲與顯示技術。
關鍵詞 資料庫,數據控制項,二進制,圖像存儲,圖像顯示,ADODB,Recordset
資料庫是數據管理的最新技術,是計算機科學的重要分支,是現代計算機信息系統和計算機應用的基礎和核心。在科學技術高速發展的今天,在信息資源無處不在、無處不用,已成為各部門的重要財富的時候,對於從事程序開發的人員來說顯得尤為重要。
如今,對資料庫的操作不僅僅滿足於對字元和數字的單一操作,圖像的存儲與顯示已顯得尤為重要。下面作者將以VB6.0與Access97作為開發工具,分別介紹兩種圖像顯示與存儲的方法。
利用數據控制項和數據綁定控制項
利用這種方法,不寫或寫少量代碼就可以構造簡單的資料庫應用程序,這種方法易於被初學者接受。在舉例之前,先把數據綁定功能簡要的說明一下,凡是具有DataSource屬性的控制項都是對數據敏感的,它們都能通過數據控制項直接使用資料庫里的數據。比如CheckBox Control , ComboBox Comtrol , TextBox Comtrol , PictureBox Control ,Image Comtrol … 因為這種方式涉及到的知識點比較少,也比較容易理解,不多作說明,現直接介紹編程步驟。
1、從資料庫中顯示所需要的圖片
首先,添加一個Data數據控制項,設置它的DatabaseName和RecordSource屬性,
strPath = App.Path
If Right(strPath, 1) <> "\" Then
strPath = strPath & "\"
MyData.DatabaseName = strPath & "ExampleDB.mdb" '資料庫存地址
MyData.RecordSource = "Info" '表名
第二步,添加Image控制項用來顯示圖片,設置它的DataSource和DataField屬性。例如本例中: Image1.DataSource="MyData"和Image1.DataField=" MyPhoto" 。然後設置其它具有數據綁定功能的控制項用來顯示所要的其它內容,經過這兩步的操作,運行程序就可以顯示你要的數據了。
2、向資料庫中添加需要存儲的圖片
首先,利用數據控制項所具有的AddNew屬性,添加一個按鈕,雙擊後添加如下代碼MyData.Recordset.AddNew
第二步,為Image控制項圖片指定圖片路徑Image1.Picture = LoadPicture("圖片路徑"),經過這兩步的操作,就可以向資料庫中添加圖片了。
這種方法最簡單快捷,要寫的代碼量很少。但是這種方法在運行速度和靈活性方面有一定的限制,適合於初學者和一些簡單的應用,要想靈活多變的顯示圖像,下面介紹的方法或許更適應您的要求。
利用編寫代碼實現圖片的存儲與顯示
這種方法相對於方法一來說,代碼量大,但是它操作靈活,能夠滿足多樣形式下的操作,受到更多編程者的青睞。但是涉及到的知識面相對要多一些,不僅要掌握資料庫的操作方法,還要二進制文件的讀寫作進一步的了解。關於資料庫及二進制文件的基本操作很多參考書上都介紹的比較詳細,需要時請查閱即可。在編程之前把本部分用到的變數說明如下:
Dim RS As New ADODB.Recordset
Dim Chunk() As Byte
Const ChunkSize As Integer = 2384
Dim DataFile As Integer, Chunks, Fragment As Integer
Dim MediaTemp As String
Dim lngOffset, lngTotalSize As Long
Dim i As Integer
1、從資料庫中顯示所需要的圖片
第一步首先打開資料庫,看有沒有要查找的內容,有則繼續執行,沒有就退出
RS.Source = "select * from Info Where Name='" & sparaName &"';"
RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;"
RS.Open
If RS.EOF Then RS.cCose : Exit Sub
第二步,讀出長二進制數據即圖片數據,把它轉換成圖片文件,操作過程如下
MediaTemp = strPath & "picturetemp.tmp"
DataFile = 1
Open MediaTemp For Binary Access Write As DataFile
lngTotalSize = RS!MyPhoto.ActualSize
Chunks = lngTotalSize \ ChunkSize
Fragment = lngTotalSize Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = RS!MyPhoto.GetChunk(Fragment)
Put DataFile, , Chunk()
For i = 1 To Chunks
ReDim Chunk(ChunkSize)
Chunk() = RS!MyPhoto.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next i
Close DataFile
第三步,關閉資料庫,這樣就可以顯示所要的圖片了。
RS.Close
If MediaTemp = "" Then Exit Sub
Picture1.Picture = LoadPicture(MediaTemp)
If Picture1.Picture = 0 Then Exit Subj
2、向資料庫中添加需要存儲的圖片
向資料庫添加存儲的圖片是顯示圖片逆過程,只要掌握了顯示圖片的操作,存儲圖片的操作也就迎刃而解了,下面將操作步驟介紹如下
第一步首先打開資料庫,過程如下:
RS.Source = "select * from Info ;"
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;"
RS.Open
第二步,把要存儲的圖片轉換成二進制長文件存入資料庫中,操作過程如下
RS.AddNew
DataFile = 1
Open strPathPicture For Binary Access Read As DataFile
FileLen = LOF(DataFile) ' 文件中數據長度
If FileLen = 0 Then : Close DataFile : RS.Close : Exit Sub
Chunks = FileLen \ ChunkSize
Fragment = FileLen Mod ChunkSize
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
RS!MyPhoto.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
RS!MyPhoto.AppendChunk Chunk()
Next i
Close DataFile
第三步,更新紀錄後,關閉資料庫,就完成了數據圖片到資料庫的存儲。
RS.Update
RS.Close
Set RS = Nothing
兩種方法在使用方面各有所長,讀者可以針對自己的情況做出合理的選擇。
方法很容易實現的.和樓上的不太一樣.
謝謝啊~
⑨ 怎樣從SQL資料庫中讀取圖片,將他存為文件
Public Function ReadFromDb(ByRef conn As ADODB.Connection, ByVal strTbl As String, ByVal strFl As String, ByVal strCondi As String) As Boolean
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "select top 1 * from " & strTbl & " where " & strCondi, conn, 3, 2
If rs.EOF Or IsNull(rs(strFl)) Then
ReadFromDb = False
Exit Function
End If
Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rs.Fields(strFl).Value
mstream.SaveToFile "c:\carrot.gif", adSaveCreateOverWrite
rs.Close
ReadFromDb = True
End Function
⑩ 怎麼從資料庫讀取圖片數據
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public DataSet ds = null;
public SqlDataAdapter sda = null;
public static SqlConnection conn = null;
//連接資料庫
public void OpenLink()
{
conn = new SqlConnection();
conn.ConnectionString = "Server=192.168.1.5;uid=sa;pwd=555;dataBase=資料庫名";
try
{
conn.Open();
}
catch
{
MessageBox.Show("連接資料庫丟失!");
}
}
//查詢數據表
public void link(String sql)
{
if (conn != null)
{
ds = new DataSet();
sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand(sql, conn);
SqlCommandBuilder builder = new SqlCommandBuilder(sda);
sda.Fill(ds);
}
}
public void Pix(PictureBox px, String name) //顯示圖片
{