Статья

Статья Работа с двоичными данными SQL Server ASP

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.6.2025



Работа с двоичными данными (SQL Server + ASP)

Христофоров Юрий

В статье будет рассказано как можно работать с двоичными данными в SQL Server с помощью связки ASP + ADO. Поставим перед собой три задачи:

загрузить jpg-файл в столбец типа image таблицы SQL Server

выгрузить этот файл с сохранением на диске

отобразить на web-странице изображение, взятое из базы данных

Для начала создадим базу данных в SQL Server - пусть она будет называться test. Далее необходимо создать таблицу в нашей базе данных - назовем ее blob. Для выполнения указанных действий можно воспользоваться инструментом SQL Server Enterprise Manager.

Ниже на скриншоте показана структура этой таблицы:

Структура таблицы blob

blob_id - первичный ключ таблицы (поле типа IDENTITY)

Теперь можно приступать к разработке ASP-скрипта для загрузки тестового файла test.jpg в созданную таблицу.

Начиная с версии ADO 2.5 и выше в ADO появился объект ADODB.Stream. Он отлично подходит для работы с двоичными данными. Его мы и будем использовать.

Файл import.asp

<%@ Language=VBScript %>

<%

option explicit

Response.Buffer = True

Response.Expires = 0

Server.ScriptTimeout = 600

Dim cn, rs, objStream, sSQL

Set cn = Server.CreateObject("ADODB.Connection")

Set rs = Server.CreateObject("ADODB.Recordset")

Set objStream = Server.CreateObject("ADODB.Stream")

cn.Open "Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;"

sSQL = "SELECT * FROM blob WHERE blob_id=0"

rs.Open sSQL, cn, 1, 3

rs.AddNew

objStream.Type = 1

objStream.Open

' путь к файлу для загрузки

objStream.LoadFromFile(Server.MapPath("./") & "\test.jpg" )

rs.Fields("name").Value = "Тестовая картинка"

rs.Fields("blob_file").Value = objStream.Read

rs.Update

rs.Close

objStream.Close

cn.Close

Set rs = Nothing

Set objStream = Nothing

Set cn = Nothing

%>

<html>

<head>

<body>

<center>

<b>Файл успешно загружен !</b>

</center>

</body>

</head>

</html>

Теперь напишем скрипт для экспорта двоичных данных из базы данных в jpg файл.

Файл export.asp

<%@ Language=VBScript %>

<%

option explicit

Response.Buffer = True

Response.Expires = 0

Server.ScriptTimeout = 600

Dim cn, rs, objStream, sSQL

Set cn = Server.CreateObject("ADODB.Connection")

Set rs = Server.CreateObject("ADODB.Recordset")

Set objStream = Server.CreateObject("ADODB.Stream")

cn.Open "Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;"

' запрос однозначно получающий запись из таблицы

' в данном случае для примера blob_id = 1

' в Вашем случае это может быть другое число

sSQL = "SELECT * FROM blob WHERE blob_id=1"

rs.Open sSQL, cn, 1, 3

objStream.Type = 1

objStream.Open

objStream.Write rs.Fields("blob_file").Value

' папка, где сохраняется файл, должна иметь NTFS права на чтение/запись для

' интернет-пользователя (обычно IUSR_<имя_компьютера>)

' в данном случае - это текущая папка

objStream.SaveToFile Server.MapPath("./") & "\test_from_db.jpg", 2

rs.Close

objStream.Close

cn.Close

Set rs = Nothing

Set objStream = Nothing

Set cn = Nothing

%>

<html>

<head>

<body>

<center>

<b>Файл успешно сохранен из базы данных !</b>

</center>

</body>

</head>

</html>

Теперь напишем скрипт для получения изображения из базы данных и непосредственного отображения на web-странице.

Файл img.asp

<%@ Language=VBScript %>

<%

option explicit

Response.Buffer = True

Response.Expires = 0

Server.ScriptTimeout = 600

Response.ContentType = "image/jpeg"

Dim cn, rs, sSQL, binStream

Set cn = Server.CreateObject("ADODB.Connection")

Set rs = Server.CreateObject("ADODB.Recordset")

cn.Open "Provider=SQLOLEDB.1;Initial Catalog=test;Data Source=localhost;UID=yura;PWD=yura;"

' запрос однозначно получающий запись из таблицы

' в данном случае для примера blob_id = 1

' в Вашем случае это может быть другое число

sSQL = "SELECT * FROM blob WHERE blob_id=1"

rs.Open sSQL, cn, 1, 3

binStream = rs.Fields("blob_file").Value

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing

Response.BinaryWrite binStream

%>

ASP-скрипт img.asp можно указать в атрибуте src тега img:

Файл img_test.asp

<%@ Language=VBScript %>

<html>

<head>

</head>

<body>

<center>

<img border=0 src="img.asp">

</center>

</body>

</html>

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.activex.net.ru/



1. Реферат на тему Aritficial Intelligence Essay Research Paper Artificial IntelligenceArtificial
2. Курсовая Проект производства работ на строительство трехэтажного жилого дома в г Калуга
3. Реферат на тему Canadian Identity Essay Research Paper The definition
4. Диплом Русская герменевтика, или прерванный полет
5. Реферат Рейснер, Лариса Михайловна
6. Курсовая Тепловой расчет ДВС 21703 Priora
7. Реферат Чрезвычайные ситуации природного характера сели
8. Реферат на тему Characterization Of Oedipu SREx Essay Research Paper
9. Реферат Корреляционный анализ для ранговых шкал
10. Реферат на тему Metamorphosis Of Narcissus 2