В этой статье описывается, как хранить изображения в SQL Server, а также читать и отображать их в .Net WinForm и .Net WebForm (asp.net).
1. Используйте asp.net, чтобы загрузить изображение и сохранить его на SQL Server, затем прочитать его с SQL Server и отобразить:
1) Загрузите и сохраните на SQL Server.
Структура базы данных
создать таблицу тестов
{
идентичность(1,1),
FИзображение изображения
}
Связанные хранимые процедуры
Создать процедуру UpdateImage
(
@UpdateImage Изображение
)
Как
Вставить в тест (FImage) значения (@UpdateImage)
ИДТИ
Добавьте в файл UpPhoto.aspx следующее:
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="Upload"></asp:Button>
Затем добавьте код обработки события щелчка кнопки btnAdd в файл кода программной части UpPhoto.aspx.cs:
Private void btnAdd_Click (отправитель объекта, System.EventArgs e)
{
//Получаем изображение и конвертируем его в byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
байт [] PhotoArray = новый байт [upPhotoLength];
Поток PhotoStream = upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//Подключаемся к базе данных
SqlConnection conn = новый SqlConnection ();
conn.ConnectionString="Источник данных=localhost;База данных=test;Идентификатор пользователя=sa;Pwd=sa";
SqlCommand cmd = новый SqlCommand («UpdateImage», conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//Если вы хотите добавлять изображения без использования хранимых процедур, измените приведенные выше четыре строки кода на:
//string strSql="Вставить в значения test(FImage)(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
конн.Открыть();
cmd.ExecuteNonQuery();
конн.Закрыть();
}
2) Считайте с SQL Server и отобразите его. Добавьте следующий код туда, где необходимо отобразить изображение:
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>
Основной код ShowPhoto.aspx:
частная пустота Page_Load (отправитель объекта, System.EventArgs e)
{
если(!Page.IsPostBack)
{
SqlConnection conn = новый SqlConnection()
conn.ConnectionString="Источник данных=localhost;База данных=test;Идентификатор пользователя=sa;Pwd=sa";
string strSql="select * from testwhere id=2";//Предположим здесь, что получено изображение с идентификатором 2
SqlCommand cmd = новый SqlCommand (strSql, conn);
конн.Открыть();
SqlDataReader Reader = cmd.ExecuteReader();
читатель.Читать();
Response.ContentType="application/octet-stream";
Response.BinaryWrite((Byte[])reader["FImage"]);
Ответ.Конец();
читатель.Закрыть();
}
}
2. Сохраните изображение на SQL Server в WinForm, прочитайте его с SQL Server и отобразите в графическом окне.
1), хранить в SQL Server
Структура базы данных и используемые хранимые процедуры такие же, как указано выше. Сначала добавьте в форму элемент управления OpenFileDialog и назовите его dSelectPic;
Затем добавьте кнопку открытия файла в форму и добавьте следующий код события клика:
Поток мс;
байт[] пикбайт;
//ofdSelectPic.ShowDialog();
если (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ок");
picbyte=новый байт[ms.Length];
мс.Позиция=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("Чтение завершено!");
//Подключаемся к базе данных
SqlConnection conn = новый SqlConnection ();
conn.ConnectionString="Источник данных=localhost;База данных=test;Идентификатор пользователя=sa;Pwd=sa";
SqlCommand cmd = новый SqlCommand («UpdateImage», conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
конн.Открыть();
cmd.ExecuteNonQuery();
конн.Закрыть();
мс.Закрыть();
}
}
2) Чтение и отображение в графическом поле Сначала добавьте графическое поле с именем ptbShow.
Затем добавьте кнопку и добавьте следующее событие ответа:
SqlConnection conn = новый SqlConnection ();
conn.ConnectionString="Источник данных=localhost;База данных=test;Идентификатор пользователя=sa;Pwd=sa";
string strSql="выберите FImage из теста, где id=1";
SqlCommand cmd = новый SqlCommand (strSql, conn);
конн.Открыть();
SqlDataReader Reader = cmd.ExecuteReader();
читатель.Читать();
MemoryStream ms = новый MemoryStream((byte[])reader["FImage"]);
Изображение изображения = Image.FromStream(ms,true);
читатель.Закрыть();
конн.Закрыть();
ptbShow.Image=изображение;
Исходный адрес: http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx.