我在网上找了很多的代码 实现了一个用FileUpLoad控件上传照片 但是上传到表中的是二进制流,
我现在没有办法读取这些读片 还有 如果我在表中建立一个递增的主键 就不执行了,本人新手,贴出我找的代码 请高手指点;
        Int32 intFileLength;
        string strFileType;
        string strFileName;
        Stream stmFile;
        strFileName = "";  
        string sqlserver=ConfigurationManager.ConnectionStrings["sql"].ToString();
        SqlConnection myCon = new SqlConnection(sqlserver);
        strFileName = FileBox1.PostedFile.FileName;           //获取文件名
        intFileLength = FileBox1.PostedFile.ContentLength;    //获取文件大小 以字节为单位
        strFileType = FileBox1.PostedFile.ContentType;      //获取上传类型  
        stmFile = FileBox1.PostedFile.InputStream;         //获取文件准备读取
        byte[] ByteFile = new byte[intFileLength];
        stmFile.Read(ByteFile, 0, intFileLength);               //设置当前流的位置为流的开始 
        string strCom = "INSERT   INTO   pic Values(@Name,@FileData,@FileType,@FileLength)";//如果表中有个pid 的递增主键 就上传不上去
        SqlCommand myCom = new SqlCommand(strCom, myCon);
        myCom.Parameters.Add("@Name", SqlDbType.Char, 255);
        myCom.Parameters.Add("@FileData", SqlDbType.Image);
        myCom.Parameters.Add("@FileType", SqlDbType.Char, 255);
        myCom.Parameters.Add("@FileLength", SqlDbType.BigInt);        myCom.Parameters["@Name"].Value = strFileName;
        myCom.Parameters["@FileData"].Value = ByteFile;
        myCom.Parameters["@FileType"].Value = strFileType;
        myCom.Parameters["@FileLength"].Value = intFileLength;        myCon.Open();
        try
        {            myCom.ExecuteNonQuery();        }
        catch
        {
                Response.Write("Other   Error");
        }
        myCon.Close();
    }  
还有如何用griwview控件读取这些图片 有源码的 请直接贴出 或者发到我邮箱 [email protected]
谢谢

解决方案 »

  1.   

    DataGridShowImage.aspx<%@ Page language="c#" debug="true" Codebehind="DataGridShowImage.aspx.cs" AutoEventWireup="false"
     Inherits="eMeng.Exam.DataGridShowImage.DataGridShowImage" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
      <title>从数据库中取得照片并显示在DataGrid中</title>
      <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
      <meta name="CODE_LANGUAGE" Content="C#">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="DataGridShowImage" method="post" runat="server">
      <h3 align="center">从数据库中取得照片并显示在DataGrid中</h3>
      <asp:DataGrid ID="DG_Persons" AutoGenerateColumns="False" Width="99%" HeaderStyle-BackColor="#ff0000"
       HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff" ItemStyle-BackColor="Beige"
        BorderColor="#000000" Runat="server" HeaderStyle-HorizontalAlign="Center">
      <Columns>
        <asp:TemplateColumn HeaderText="姓名">
          <ItemTemplate>
            <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonName") %>' ID="Label1"/>
          </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="电子邮件">
          <ItemTemplate>
            <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonEmail") %>' ID="Label2"/>
          </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="性别">
          <ItemTemplate>
            <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonSex") %>' ID="Label3"/>
          </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="出生日期">
          <ItemTemplate>
            <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonDOB") %>' ID="Label4"/>
          </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="照片">
          <ItemTemplate>
            <asp:Image Runat=server ID="Image1"
             ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>' />
          </ItemTemplate>
        </asp:TemplateColumn>
      </Columns>
      </asp:DataGrid>
    </form>
    </body>
    </HTML>DataGridShowImage.aspx.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;namespace eMeng.Exam.DataGridShowImage
    {
     /// <summary>
     /// DataGridShowImage 的摘要说明。
     /// </summary>
     public class DataGridShowImage : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.DataGrid DG_Persons;  private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if(!this.IsPostBack)
       {
        BindGrid();
       }  }
      private void BindGrid()
      {
       string strCnn  = "Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;";
       SqlConnection myConnection = new SqlConnection(strCnn);
       SqlCommand myCommand = new SqlCommand("SELECT * FROM Person", myConnection);
       myCommand.CommandType = CommandType.Text;
       try
       {
        myConnection.Open();
        DG_Persons.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
        DG_Persons.DataBind();
       }
       catch(SqlException SQLexc)
       {
        Response.Write("提取数据时出现错误:" + SQLexc.ToString());
       }
      }
      protected string FormatURL(object strArgument)
      {
       return "ReadImage.aspx?id=" + strArgument.ToString();
      }#region Web Form Designer generated code
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);
      }
    #endregion
     }
    }ReadImage.aspx<%@ Page language="c#" Codebehind="ReadImage.aspx.cs" AutoEventWireup="false"
     Inherits="eMeng.Exam.DataGridShowImage.ReadImage" %>ReadImage.aspx.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Data.SqlClient;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace eMeng.Exam.DataGridShowImage
    {
      /// <summary>
      /// ReadImage 的摘要说明。
      /// </summary>
      public class ReadImage : System.Web.UI.Page
      {
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       string strImageID = Request.QueryString["id"];
       SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;");
       SqlCommand myCommand = new SqlCommand("Select PersonImageType, PersonImage from Person Where PersonID=" 
        + strImageID, myConnection);   try
       {
        myConnection.Open();
        SqlDataReader myDataReader;
        myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
        if(myDataReader.Read())
        {
         Response.Clear();     Response.ContentType = myDataReader["PersonImageType"].ToString();
         Response.BinaryWrite((byte[])myDataReader["PersonImage"]);
        }
        myConnection.Close();
       }
       catch (SqlException SQLexc)
       {
       }
       Response.End();
      }
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
          //
          // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
          //
          InitializeComponent();
          base.OnInit(e);
        }

        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {    
          this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
      }
    }