1.在Access中存储图片的字段为"Ole 对象"
2.将上传的文件存到 字节数组 中.
3.然后将该数据存到数据库里就行了.
1
private void UpLoadFile()
2
{
3
//get the file
4
Stream uploadStream = FileUpload1.PostedFile.InputStream;
5
int fileLengh = FileUpload1.PostedFile.ContentLength;
6
byte[] filedata = new byte[fileLengh];
7
uploadStream.Read(filedata, 0, fileLengh);
8
string filename = FileUpload1.PostedFile.FileName;
9
string filetype = FileUpload1.PostedFile.ContentType;
10
11
//
12
OleDbConnection conn = new OleDbConnection(CONSTRING);
13
OleDbCommand comm = new OleDbCommand();
14
comm.Connection = conn;
15
16
//comm.CommandText = "insert into person (name,photo) values("+TName.Text.Trim()+","++")";
17
//
18
comm.CommandText = "insert into person (name,photo) values (@name,@photo)";
19
//
20
OleDbParameter name = new OleDbParameter("@name",OleDbType.VarChar,50);
21
name.Value = "aaa";
22
comm.Parameters.Add(name);
23
OleDbParameter photo = new OleDbParameter("@photo", OleDbType.Binary);
24
photo.Value = filedata;
25
comm.Parameters.Add(photo);
26
//
27
conn.Open();
28
comm.ExecuteReader();
29
conn.Close();
30
31
}

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

在Access中显示图片:
在ASP.NET2.0中显示数据库中的图片,可以利用HttpHandler(.ashx)页面动态显示图片.
然后在GridView等控件的自定义模版中安置一个Image控件,并设置Image控件的ImageUrl属性为类似 XXX.ashx?photoId=1 即可显示图片
实例代码:
1
using System;
2
using System.Web;
3
using System.Data.OleDb;
4
using System.IO;
5
6
public class Handler : IHttpHandler
{
7
8
public void ProcessRequest (HttpContext context)
{
9
context.Response.ContentType = "image/jpeg";
10
context.Response.Cache.SetCacheability(HttpCacheability.Public);
11
context.Response.BufferOutput = false;
12
int personId = -1;
13
Stream stream = null;
14
if (context.Request.QueryString["PersonID"] != null && context.Request.QueryString["PhotoID"] != "")
15
{
16
personId = Convert.ToInt32(context.Request.QueryString["PersonID"]);
17
stream = GetPhoto(personId);
18
}
19
const int buffersize = 1024 * 16;
20
byte[] buffer = new byte[buffersize];
21
int count = stream.Read(buffer, 0, buffersize);
22
while (count > 0)
23
{
24
context.Response.OutputStream.Write(buffer, 0, count);
25
count = stream.Read(buffer, 0, buffersize);
26
}
27
}
28
29
public Stream GetPhoto(int personId)
30
{
31
OleDbConnection myConnection = new OleDbConnection();
32
myConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\db1.mdb";
33
OleDbCommand myCommand = new OleDbCommand("SELECT Photo FROM Person WHERE Id=@Id",myConnection);
34
myCommand.Parameters.Add(new OleDbParameter("@Id", personId));
35
myConnection.Open();
36
object result = myCommand.ExecuteScalar();
37
38
try
39
{
40
return new MemoryStream((byte[])result);
41
}
42
catch (ArgumentNullException e)
43
{
44
return null;
45
}
46
finally
{
47
myConnection.Close();
48
}
49
}
50
51
52
public bool IsReusable
{
53
get
{
54
return false;
55
}
56
}
57
58
}
最后在控件的模板中可以这样帮定,实例代码:
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

45

46



47

48

49

50

51

52



53



54

55

56

57

58

1
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnPageIndexChanged="GridView1_PageIndexChanged" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="1">
2
<Columns>
3
<asp:TemplateField HeaderText="Photo">
4
<ItemTemplate>
5
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "Handler.ashx?PersonId=" + Eval("Id") %>' Width="200px" />
6
</ItemTemplate>
7
</asp:TemplateField>
8
</Columns>
9
</asp:GridView>

2

3

4

5

6

7

8

9
