请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
pb44
9年前发布

C#从SqlServer数据库读写文件代码

C#从SqlServer数据库读写文件代码,可以将文件存储在数据库内,然后通过代码对文件进行读写

<%@ Page Language="C#" %>      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <script runat="server">    private string connectionString = "Data Source=192.168.3.1;Initial Catalog=TestData;User Id=sa;Password=lambada;";    protected void Button1_Click(object sender, EventArgs e)    {    //得到文件数组    byte[] fileData = FileUpload1.FileBytes;    //得到文件名字    string fileName = System.IO.Path.GetFileName(FileUpload1.FileName);    //得到文件类型    string fileType = FileUpload1.PostedFile.ContentType;        //构建数据库连接,SQL语句,创建参数          System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(connectionString);    String strSql = "INSERT INTO FileTable (ContentType,Content,Title)" +    "VALUES (@ContentType,@Content,@Title)";    System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(strSql, myConnection);    command.Parameters.AddWithValue("@ContentType", fileType);    command.Parameters.AddWithValue("@Content", fileData);    command.Parameters.AddWithValue("@Title", fileName);    //打开连接,执行查询    myConnection.Open();    command.ExecuteNonQuery();    myConnection.Close();    myConnection.Dispose();    Response.Redirect(Request.FilePath);    }        protected void Page_Load(object sender, EventArgs e)    {    /*     CREATE TABLE [FileTable] (      [FileId] [int] IDENTITY (1, 1) NOT NULL ,      [Title] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,      [ContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,      [Content] [image] NULL ,      CONSTRAINT [PK_FileTable] PRIMARY KEY  CLUSTERED      (          [FileId]      )  ON [PRIMARY]    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]        */          //构建数据库连接,SQL语句,创建参数    System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(connectionString);    String strSql = "select * from FileTable";    System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(strSql, myConnection);    //打开连接,执行查询    myConnection.Open();    System.Data.SqlClient.SqlDataReader dr = command.ExecuteReader();    GridView1.DataSource = dr;    GridView1.DataBind();    myConnection.Close();    myConnection.Dispose();    }  </script>  <html xmlns="http://www.w3.org/1999/xhtml">  <head id="Head1" runat="server">    <title></title>  </head>  <body>    <form id="form1" runat="server">    <asp:FileUpload ID="FileUpload1" runat="server" />    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文件" />    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">    <Columns>    <asp:HyperLinkField DataNavigateUrlFields="FileId" HeaderText="文件名" DataTextField="Title" DataNavigateUrlFormatString="~/Download.ashx?FileId={0}" />    </Columns>    </asp:GridView>    </form>  </body>  </html>

//Download.ashx
<%@ WebHandler Language="C#" Class="Download" %>  using System;  using System.Web;  using System.Data.SqlClient;  public class Download : IHttpHandler  {    private string connectionString = "Data Source=192.168.3.1;Initial Catalog=TestData;User Id=sa;Password=lambada;";    public void ProcessRequest(HttpContext context)    {      String fileId = context.Request.QueryString["FileId"];      if (String.IsNullOrEmpty(fileId))      {        context.Response.ContentType = "text/html";        context.Response.Write("无效的ID。");        return;      }      int id = 0;      if (!Int32.TryParse(fileId, out id))      {        context.Response.ContentType = "text/html";        context.Response.Write("ID 不是数字。");        return;      }          SqlConnection myConnection = new SqlConnection(connectionString);      String strSql = "select * from FileTable Where FileId=@FileId";      SqlCommand command = new SqlCommand(strSql, myConnection);      command.Parameters.AddWithValue("@FileId", fileId);      //打开连接,执行查询      myConnection.Open();      SqlDataReader dr = command.ExecuteReader();      if (dr.Read())      {        String fileName = dr["Title"].ToString();        if (context.Request.UserAgent.IndexOf("MSIE") > -1)        {          fileName = HttpUtility.UrlEncode(fileName);        }        context.Response.ClearContent();        context.Response.ContentType = dr["ContentType"].ToString();        context.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);        context.Response.BinaryWrite((Byte[])dr["Content"]);      }      else      {        context.Response.ContentType = "text/html";        context.Response.Write("没找到文件。");      }      myConnection.Close();      myConnection.Dispose();    }        public bool IsReusable    {      get      {        return false;      }    }      }