Иногда изображения или файлы необходимо хранить в базе данных из-за определенных потребностей (например, безопасности). Конечно, в целом, особенно когда файлы относительно большие, многие люди не рекомендуют хранить файлы в двоичной форме в базе данных. Доступ к файлам в файле организован следующим образом (идея такая же, как и доступ в SQL Server2000. При хранении в данных сохраняется двоичный поток байтов изображения или файла. При чтении соответствующее поле в база данных считывается в байтовые данные, а затем выводится):
1. Создайте таблицу базы данных в TOAD или SQLPlus.
1СОЗДАТЬ ТАБЛИЦУ TEST_TABLE
2(
3 ИД VARCHAR2(36 БАЙТ),
4 НАЗВАНИЕ VARCHAR2(50 БАЙТ),
5 ФОТО-КАЧОК
6)
7
2. Создайте новую страницу ASPX, поместите на нее элемент управления FileUpload, назовите его fileUp и поместите две кнопки с именами btnSave (сохранить) и btnRead (прочитать).
3. Выполните следующий код в событии btnSave, чтобы сохранить изображения или файлы:
Сохранение изображений (файлов) в Oracle
1StringBuilder sbSQL = new StringBuilder("вставить в значения Test_Table(ID,Name,Photo)(:ID,:Name,:Photo)");
2 OracleConnection cn = новый OracleConnection(strCn);
3 OracleCommand cmd = cn.CreateCommand();
4 cmd.CommandText = sbSQL.ToString();
5 cmd.Parameters.Add(":ID", OracleType.VarChar, 36).Value = Guid.NewGuid().ToString();
6 cmd.Parameters.Add(":Name", OracleType.VarChar, 50).Value = fileUp.FileName ;
7 int intLen = fileUp.PostedFile.ContentLength;
8 байт[] pic = новый байт[intLen];
9 fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
10 cmd.Parameters.Add(":Фото", OracleType.Blob).Value = pic;
11 попытка
12 {
13 сн.Открыть();
14 cmd.ExecuteNonQuery();
15}
16 уловов (исключение ex)
17 {
18 Response.Write(ex.Message);
19}
20 наконец
двадцать один {
22 сн.Закрыть();
двадцать три }
24
4. Метод чтения следующий:
Чтение картинок (файлов) из Oracle
1OracleConnection cn = новый OracleConnection(strCn);
2OracleCommand cmd = cn.CreateCommand();
3cmd.CommandText = "выбрать фотографию из test_table";
4 попробовать
5{
6 cn.Открыть();
7 поток MemoryStream = новый MemoryStream();
8 Читатель IDataReader = cmd.ExecuteReader();
9 если (читатель.Читать())
10 {
11 байт[] pic = (байт[])читатель[0];
12 //byte[] pic = (byte[])cmd.ExecuteScalar();
13 поток.Запись(рис., 0, рис.Длина);
14 //Растровое изображение bitMap = новое растровое изображение(поток);
15 //Response.ContentType = "изображение/Jpeg";
16 //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17 //Комментарий может отображать изображение в IE вместо загрузки изображения.
18 //Следующий метод загружает файл напрямую
19 Response.ContentType = "application/octet-stream";
20 Response.AddHeader("Content-Disposition", "attachment;FileName= demo.JPG");
21 Response.BinaryWrite(рис);
22 Ответ.Конец();
двадцать три }
двадцать четыре
25}
26catch (исключение)
27{
28 Response.Write(ex.Message);
29}
30наконец
31{
32 cn.Закрыть();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html