sql server数据库保存图片或者其他小文件
测试用sql server数据库保存图片或者其他小文件。文件流字段用varbinary类型。测试用sql server数据库保存图片或者其他小文件。
文件流字段用varbinary类型。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AsposeHelper ah = new AsposeHelper();
//ah.extractImagesToFiles();
//bool success=RegHelper.SetData("test\\a\\a1","a1name","name_a111");
//string data= RegHelper.GetData("test\\a\\a1","");
//bool success = RegHelper.RemoveKey("", "test");
DbHelper db = new DbHelper();
string FilePath = @"F:\360data\重要数据\桌面\测试\";//目录
string FileName = "001.txt";//要存到数据库的文件
byte[] FileData = File.ReadAllBytes(FilePath + FileName);
string Type1 = DateTime.Now.ToString("yyyyMMddHHmmss");
string Type2 = Guid.NewGuid().IsNull("").Replace("-", "");
if (FileData.LongLength < 10485760)
{
SqlParameter[] param = new SqlParameter[]{
new SqlParameter("Type1",Type1),
new SqlParameter("Type2",Type2),
new SqlParameter("ImageName",FileName),
new SqlParameter("ImageSize",GetFileSize(FileData.LongLength)),
new SqlParameter("ImageData",FileData)
};
////写入
db.ExecuteNonQuery("insert into SystemImage(,,,,) values(@Type1,@Type2,@ImageName,@ImageSize,@ImageData)", param);
}
else
{
throw new Exception("文件不能大于10M");
}
FileData = null;
//Application.Run(new Form1());
////查询,保存为文件
DataRow dr = db.ExecuteDataRow("select * from SystemImage where imageName='展会平台首页 - 副本.jpg'");
byte[] data = (byte[])dr["ImageData"];
FileStream fs = new FileStream(@"F:\360data\重要数据\桌面\" + dr["ImageName"], FileMode.Create);
//FileStream fs = new FileStream(@"F:\360data\重要数据\桌面\" + "1.txt", FileMode.Create);
fs.Write(data, 0, data.Length);
fs.Dispose();
/*
---Sql server建表
CREATE TABLE .(
(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
(50) COLLATE Chinese_PRC_CI_AS NOT NULL,
(200) COLLATE Chinese_PRC_CI_AS NOT NULL,
(20) COLLATE Chinese_PRC_CI_AS NULL,
(max) NOT NULL
)
*/
}
public static string GetFileSize(long length)
{
string len = "";
if (length > 1048576)//大于1M
{
len = string.Format("{0:f2}MB", ((decimal)length) / 1048576M);
}
else if (length > 1024)//大于1M
{
len = string.Format("{0:f2}KB", ((decimal)length) / 1024M);
}
else
{
len = string.Format("{0:f2}B", length);
}
return len;
}
用数据库保存文件不宜过大,本例只是测试文件保存和读取,实际项目中不建议保存图片或者文件到数据库,一般就保存到服务器,把文件的路径保存到数据库就行了。
下面这图是数据库查询结果;
从数据库导出的文件也和原文件一样。
页:
[1]