存储图片到SQLSERVER数据库中.docx

上传人:b****3 文档编号:6734478 上传时间:2023-05-10 格式:DOCX 页数:8 大小:16.72KB
下载 相关 举报
存储图片到SQLSERVER数据库中.docx_第1页
第1页 / 共8页
存储图片到SQLSERVER数据库中.docx_第2页
第2页 / 共8页
存储图片到SQLSERVER数据库中.docx_第3页
第3页 / 共8页
存储图片到SQLSERVER数据库中.docx_第4页
第4页 / 共8页
存储图片到SQLSERVER数据库中.docx_第5页
第5页 / 共8页
存储图片到SQLSERVER数据库中.docx_第6页
第6页 / 共8页
存储图片到SQLSERVER数据库中.docx_第7页
第7页 / 共8页
存储图片到SQLSERVER数据库中.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

存储图片到SQLSERVER数据库中.docx

《存储图片到SQLSERVER数据库中.docx》由会员分享,可在线阅读,更多相关《存储图片到SQLSERVER数据库中.docx(8页珍藏版)》请在冰点文库上搜索。

存储图片到SQLSERVER数据库中.docx

存储图片到SQLSERVER数据库中

如何存储图片到SQLSERVER数据库中

  SQLServer提供了一个特别的数据类型:

image,它是一个包含binary数据的类型。

下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。

在这篇文章中我们要看到如何在SQLServer中存储和读取图片。

  1、建立一个表:

  在SQLSERVER中建立这样结构的一个表:

列名类型目的

IDInteger主键ID

IMGTITLEVarchar(50)图片的标题

IMGTYPEVarchar(50)图片类型.ASP.NET要以辨认的类型

IMGDATAImage用于存储二进制数据

  2、存储图片到SQLSERVER数据库中

  为了能存储到表中,你首先要上传它们到你的WEB服务器上,你可以开发一个webform,它用来将客户端中TextBoxwebcontrol中的图片入到你的WEB服务器上来。

将你的encType属性设置为:

myltipart/formdata.

stringimgtitle=TextBox1.Text;

byte[]imgdata=newbyte[imgdatalen];

intn=imgdatastream.Read(imgdata,0,imgdatalen);

stringconnstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];

SqlConnectionconnection=newSqlConnection(connstr);

SqlCommandcommand=newSqlCommand

         ("INSERTINTOImageStore(imgtitle,imgtype,imgdata)

         VALUES(@imgtitle,@imgtype,@imgdata)",connection);

SqlParameterparamTitle=newSqlParameter

         ("@imgtitle",SqlDbType.VarChar,50);

paramTitle.Value=imgtitle;

SqlParameterparamData=newSqlParameter("@imgdata",SqlDbType.Image);

paramData.Value=imgdata;

SqlParameterparamType=newSqlParameter("@imgtype",SqlDbType.VarChar,50);

paramType.Value=imgtype;

connection.Open();

intnumRowsAffected=command.ExecuteNonQuery();

connection.Close();

  3、从数据库中恢复读取

  现在让我们来从SQLServer中读取我们放入的数据吧!

我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。

privatevoidPage_Load(objectsender,System.EventArgse)

{

 stringimgid=Request.QueryString["imgid"];

 stringconnstr=((NameValueCollection)

 Context.GetConfig("appSettings"))["connstr"];

 stringsql="SELECTimgdata,imgtypeFROMImageStoreWHEREid="+imgid;

 SqlConnectionconnection=newSqlConnection(connstr);

 SqlCommandcommand=newSqlCommand(sql,connection);

 connection.Open();

 SqlDataReaderdr=command.ExecuteReader();

 if(dr.Read())

 {

  Response.ContentType=dr["imgtype"].ToString();

  Response.BinaryWrite((byte[])dr["imgdata"]);

 }

 connection.Close();

}

  要注意的是Response.BinaryWrite而不是Response.Write.

  下面给大家一个用于C#Winform的存入、读取程序。

其中不同请大家自己比较!

(为了方便起见,我将数据库字段简化为二个:

imgtitle和imgdata。

usingSystem;

usingSystem.Drawing;

usingSystem.Collections;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.IO;

namespaceWindowsApplication21

{

 ///<summary>

 ///Form1的摘要说明。

 ///</summary>

 {

  ///<summary>

  ///必需的设计器变量。

  ///</summary>

  privatestringConnectionString="IntegratedSecurity=SSPI;InitialCatalog=;Data Source=localhost;";

  privateSqlConnectionconn=null;

  privateSqlCommandcmd=null;

  privatestringsql=null;

  privatestringnowId=null;

 publicForm1()

 {

  //

  //Windows窗体设计器支持所必需的

  //

  InitializeComponent();

  conn=newSqlConnection(ConnectionString);

  //

  //TODO:

在InitializeComponent调用后添加任何构造函数代码

  //

 }

 ///<summary>

 ///清理所有正在使用的资源。

 ///</summary>

 protectedoverridevoidDispose(booldisposing)

 {

  if(conn.State==ConnectionState.Open)

   conn.Close();

  if(disposing)

  {

   if(components!

=null)

   {

    components.Dispose();

   }

  }

  base.Dispose(disposing);

 }

 #regionWindowsFormDesignergeneratedcode

 ///<summary>

 ///设计器支持所需的方法-不要使用代码编辑器修改

 ///此方法的内容。

 ///</summary>

 privatevoidInitializeComponent()

 {

  this.SuspendLayout();

  //

  //button1

  //

  //

  //pic1

  //

  //

  //button2

  //

  //

  //openFileDialog1

  //

  //

  //label2

  //

  //

  //Form1

  //

    this.label2,

    this.button2,

    this.pic1,

    this.button1});

  this.Name="Form1";

  this.Text="Form1";

  this.Load+=newSystem.EventHandler(this.Form1_Load);

  this.ResumeLayout(false);

 }

 #endregion

 ///<summary>

 ///应用程序的主入口点。

 ///</summary>

 [STAThread]

 staticvoidMain()

 {

  Application.Run(newForm1());

 }

 privatevoidbutton1_Click(objectsender,System.EventArgse)

 {

  openFileDialog1.ShowDialog();

  {

   FileInfofi=newFileInfo(openFileDialog1.FileName);

   stringimgtitle=openFileDialog1.FileName;

   intimgdatalen=(int)fi.Length;

   byte[]imgdata=newbyte[imgdatalen];

   Streamimgdatastream=fi.OpenRead();

   intn=imgdatastream.Read(imgdata,0,imgdatalen);

   if(conn.State==ConnectionState.Open)

    conn.Close();

   ConnectionString="IntegratedSecurity=SSPI;"+"InitialCatalog=mydb;"+"Data Source=localhost;";

   conn.ConnectionString=ConnectionString;

 try

 {

  stringmySelectQuery="INSERTINTOImageStore(imgtitle,imgdata)VALUES(@imgtitle,@imgdata)";

  //stringmySelectQuery="UPDATEImageStoresetimgtitle=@imgtitle,imgdata=@imgdata";

  SqlCommandmyCommand=newSqlCommand(mySelectQuery,conn);

  SqlParameterparamTitle=newSqlParameter("@imgtitle",SqlDbType.VarChar,50);

  paramTitle.Value=imgtitle;

  SqlParameterparamData=newSqlParameter("@imgdata",SqlDbType.Image);

  paramData.Value=imgdata;

  conn.Open();

  intnumRowsAffected=myCommand.ExecuteNonQuery();

  conn.Close();

 }

 catch(Exceptionerr)

 {

  MessageBox.Show("您输入名称可能在数据库中已存在或输入为空,请检查!

"+err.ToString());

 }

 finally

 {}

}

}

 privatevoidForm1_Load(objectsender,System.EventArgse)

 {

 }

 privatevoidbutton2_Click(objectsender,System.EventArgse)

 {

  //打开数据库连接

  if(conn.State==ConnectionState.Open)

   conn.Close();

  ConnectionString="IntegratedSecurity=SSPI;"+"InitialCatalog=mydb;"+"DataSource=localhost;";

  conn.ConnectionString=ConnectionString;

  //创建数据适配器

  stringsql="SELECT*FROMImageStore";

  SqlCommandcommand=newSqlCommand(sql,conn);

  try

  {conn.Open();}

  catch(Exceptionnewerr)

  {

   MessageBox.Show("不能打开数据联接!

");

  }

  finally

  {}

  SqlDataReaderdr=command.ExecuteReader();

  if(dr.Read())

  {

   FileInfofi=newFileInfo("temp");

   FileStreammyStream=fi.Open(FileMode.Create);

   byte[]mydata=((byte[])dr["imgdata"]);

   //label2.Text="您现在看到的是:

"+dr["imgtitle"].ToString();

   foreach(byteainmydata)

   {

    myStream.WriteByte(a);

   }

  myStream.Close();

  ImagemyImage=Image.FromFile("temp");

  pic1.Image=myImage;

  pic1.Refresh();

  dr.Close();

 }

 else

 {

  MessageBox.Show("没有成功读入数据!

");

 }

 conn.Close();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2