将文件保存到数据库中或者从数据库中读取文件
在编程中我们常常会遇到“将文件保存到数据库中”这样一个问题,虽然这已不是什么高难度的问题,但对于一些刚刚开始编程的朋友来说可能是有一点困难。其实,方法非常的简单,只是可能由于这些朋友刚刚开始编程不久,一时没有找到方法而已。
下面介绍一下使用 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(); } |