首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> PHOTOSHOP教程
asp.net如何存取sql server数据库图片_asp.net技巧
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

  SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。

  1、建立一个表:

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

  

ASP.NET如何存取SQLServer数据库图片

  2、存储图片到SQL SERVER数据库中

  为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata.

  Stream imgdatastream = File1.PostedFile.InputStream;

  int imgdatalen = File1.PostedFile.ContentLength;

  string imgtype = File1.PostedFile.ContentType;

  string imgtitle = TextBox1.Text;

  byte[] imgdata = new byte[imgdatalen];

  int n = imgdatastream.Read(imgdata,0,imgdatalen);

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

  SqlConnection connection = new SqlConnection(connstr);

  SqlCommand command = new SqlCommand

  ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)

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

  SqlParameter paramTitle = new SqlParameter

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

  paramTitle.Value = imgtitle;

  command.Parameters.Add( paramTitle);

  SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );

  paramData.Value = imgdata;

  command.Parameters.Add( paramData );

  SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );

  paramType.Value = imgtype;

  command.Parameters.Add( paramType );

  connection.Open();

  int numRowsAffected = command.ExecuteNonQuery();

  connection.Close();

  3、从数据库中恢复读取

  现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。

  private void Page_Load(object sender, System.EventArgs e)

  {

  string imgid =Request.QueryString["imgid"];

  string connstr=((NameValueCollection)

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

  string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;

  SqlConnection connection = new SqlConnection(connstr);

  SqlCommand command = new SqlCommand(sql, connection);

  connection.Open();

  SqlDataReader dr = 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。

  using System;

  using System.Drawing;

  using System.Collections;

  using System.ComponentModel;

  using System.Windows.Forms;

  using System.Data;

  using System.IO;

  using System.Data.SqlClient;

  namespace WindowsApplication21

  {

  ///

  /// Form1 的摘要说明。

  ///

  public class Form1 : System.Windows.Forms.Form

  {

  private System.Windows.Forms.Button button1;

  ///

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

  ///

  private System.ComponentModel.Container components = null;

  private string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;DataSource=localhost;";

  private SqlConnection conn = null;

  private SqlCommand cmd = null;

  private System.Windows.Forms.Button button2;

  private System.Windows.Forms.PictureBox pic1;

  private System.Windows.Forms.OpenFileDialog openFileDialog1;

  private string sql = null;

  private System.Windows.Forms.Label label2;

  private string nowId=null;

  public Form1()

  {

  //

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

  //

  InitializeComponent();

  conn = new SqlConnection(ConnectionString);

  //

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

  //

  }

  ///

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

  ///

  protected override void Dispose( bool disposing )

  {

  if (conn.State == ConnectionState.Open)

  conn.Close();

  if( disposing )

  {

  if (components != null)

  {

  components.Dispose();

  }

  }

  base.Dispose( disposing );

  }

  #region Windows Form Designer generated code

  ///

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

  /// 此方法的内容。

  ///

  private void InitializeComponent()

  {

  this.button1 = new System.Windows.Forms.Button();

  this.pic1 = new System.Windows.Forms.PictureBox();

  this.button2 = new System.Windows.Forms.Button();

  this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

  this.label2 = new System.Windows.Forms.Label();

  this.SuspendLayout();

  //

  // button1

  //

  this.button1.Location = new System.Drawing.Point(0, 40);

  this.button1.Name = "button1";

  this.button1.Size = new System.Drawing.Size(264, 48);

  this.button1.TabIndex = 0;

  this.button1.Text = "加入新的图片";

  this.button1.Click += new System.EventHandler(this.button1_Click);

  //

  // pic1

  //

  this.pic1.Location = new System.Drawing.Point(280, 8);

  this.pic1.Name = "pic1";

  this.pic1.Size = new System.Drawing.Size(344, 264);

  this.pic1.TabIndex = 3;

  this.pic1.TabStop = false;

  //

  // button2

  //

  this.button2.Location = new System.Drawing.Point(0, 104);

  this.button2.Name = "button2";

  this.button2.Size = new System.Drawing.Size(264, 40);

  this.button2.TabIndex = 4;

  this.button2.Text = "从数据库中恢复图像";

  this.button2.Click += new System.EventHandler(this.button2_Click);

  //

  // openFileDialog1

  //

  this.openFileDialog1.Filter = ""图像文件(*.jpg,*.bmp,*.gif)|*.jpg|*.bmp|*.gif"";

  //

  // label2

  //

  this.label2.Location = new System.Drawing.Point(0, 152);

  this.label2.Name = "label2";

  this.label2.Size = new System.Drawing.Size(264, 48);

  this.label2.TabIndex = 5;

  //

  // Form1

  //

  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

  this.ClientSize = new System.Drawing.Size(632, 273);

  this.Controls.AddRange(new System.Windows.Forms.Control[] {

  this.label2,

  this.button2,

  this.pic1,

  this.button1});

  this.Name = "Form1";

  this.Text = "Form1";

  this.Load += new System.EventHandler(this.Form1_Load);

  this.ResumeLayout(false);

  }

  #endregion

  ///

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

  ///

  [STAThread]

  static void Main()

  {

  Application.Run(new Form1());

  }

  private void button1_Click(object sender, System.EventArgs e)


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·一个通用的JSP分页程序-JSP教程,Jsp/Servlet
·几种上传方法介绍和比较-JSP教程,资料/其它
·photoshop帮你处理照片偏色
·用photoshop elements制作贺卡
·高频开关电源的并联均流系统
·photoshop 简单制作水晶字教程
·ASP.NET 2.0服务器控件与form runat=server标记-.NET教程,Asp.Net开发
·photoshop 简单去网纹法
·晶晶亮 透心凉—用photoshop制作水珠效果
·ASP小偷(远程数据获取)程序的入门教程-ASP教程,数据库相关
最新文章
·b2c独立网店如何推广_营销推广
·google adsense域名保护列表前瞻_网赚技巧
·google adsense 违规行为集_网赚技巧
·优化adsense提高网站收益(一)_网赚技巧
·站长徐得红:提倡人性化的领导_站长访谈
·约翰·多尔:互联网内容仍不够个性化_站长访谈
·助您提升博客浏览量的五大技巧_站长心得
·photoshop模仿龟裂的瓷纹杯_photoshop教程
·2007年,个人站长将何去何从?_站长心得
·解惑:网站是靠什么来赚钱的呢_站长心得
相关主题
  • asp.net应用程序资源访问安全模型_asp.net技巧
  • asp.net中多彩下拉框的实现_asp.net技巧
  • asp.net中数据校验部分的封装与应用_asp.net技巧
  • asp.net网络编程中常用到的27个函数集_asp.net基础
  • asp.net2.0学习历程 菜鸟到中级程序员的飞跃_asp.net基础
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭