将文件保存到数据库中或者从数据库中读取文件

在编程中我们常常会遇到“将文件保存到数据库中”这样一个问题,虽然这已不是什么高难度的问题,但对于一些刚刚开始编程的朋友来说可能是有一点困难。其实,方法非常的简单,只是可能由于这些朋友刚刚开始编程不久,一时没有找到方法而已。

下面介绍一下使用 C# 来完成此项任务。

         //保存文件到SQL Server数据库中

        public void SaveLogFileToDb(string fileName)

        {

            var fi = new FileInfo(fileName);

            var fs = fi.OpenRead();

            var bytes = new byte[fs.Length];

            fs.Read(bytes, 0, Convert.ToInt32(fs.Length));

            var cn = new SqlConnection("连接字符串");

            var cm = new SqlCommand();

            cm.Connection = cn;

            cm.CommandType = CommandType.Text;

            if (cn.State == 0)

            {

                cn.Open();

            }

            var tableName = "表名";

            var fieldName = "字段名";

            cm.CommandText = "insert into " + tableName + "(" + fieldName + ") values(@file)";

            var spFile = new SqlParameter("@file", SqlDbType.Image);

            spFile.Value = bytes;

            cm.Parameters.Add(spFile);

            cm.ExecuteNonQuery();

        }

 

        //将文件从数据库中读取出来

        public void ReadFileFromDb(string fileName)

        {

            SqlDataReader dr = null;

            var objCn = new SqlConnection();

            objCn.ConnectionString = "Data Source=(local);User ID=sa;Password=;Initial Catalog=Test";

            var cm = new SqlCommand();

            cm.Connection = objCn;

            cm.CommandType = CommandType.Text;

            var fieldName = "字段名";

            var tableName = "表名";

            cm.CommandText = "select " + fieldName + " from " + tableName + " where ID=1";

            dr = cm.ExecuteReader();

            byte[] File = null;

            if (dr.Read())

            {

                File = (byte[])dr[0];

            }

            FileStream fs;

            var fi = new System.IO.FileInfo(fileName);

            fs = fi.OpenWrite();

            fs.Write(File, 0, File.Length);

            fs.Close();

        }

 
posted @ 2008-12-26 14:31  anya  阅读(565)  评论(2编辑  收藏  举报