您的位置:首页 > 数据库

C#窗体操作SQL Server存储大文件方法分享

2015-10-05 15:40 627 查看
     SQL Server 的存储空间 是一定的,并不能做到无限大。这样,在存储大文件的时候,比如,公司签订的项目合同,若要将整份儿合同内容存入数据库,也行,但是这样会降低数据库的使用效率。我就遇到过这样的问题。我的解决方案是:

     1,将合同内容以文件的方式存放在本地的物理磁盘上。(文件的格式可以自己指定,为了数据安全。咱们可以对文件加密哦)

     2,获取合同文件所在路径(这里最好是绝对路径,并且包含文件名)。

     3,将合同文件所在路径存储到数据库中,这样,大大减轻了数据从数据库输入输出的负担。

   ---------看图说话----------



    ------------------代码区-------------------------

这里,没有做SQL语句的过滤。

1,将文件内容保存至本地文件,并且存入数据库

///--实例化对象
FileStream fileStream = new FileStream("test.txt", FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(fileStream);
///--写入文件
writer.Write(textBox1.Text);
///--关闭对象
writer.Close();
fileStream.Close();

///---获取文件路经所在目录
string strFilePath = System.Environment.CurrentDirectory;
///--将文件名整合到文件所在路径
strFilePath += @"\test.txt";
///--计算即将插入数据库的行索引
int iRowCount = int.Parse(AccessHelper.dataSet("SELECT COUNT (*) FROM [FileInfo]").Tables[0].Rows[0][0].ToString()) + 1;
///--将数据(ID + filepath)录入数据库
AccessHelper.excuteSql("INSERT INTO [FileInfo] VALUES('"+iRowCount+"', '"+strFilePath+"')");
   (这里再次用到AccessHelper,有兴趣的读者,可以看看我之前写的关于   AccessHelper的笔记)

2,读取数据库中对应的存储信息,并将文件内容显示到右边的文本框中。

///--查询数据库中的数据
dataGridView1.DataSource = AccessHelper.dataSet("SELECT * FROM [FileInfo]").Tables[0];
//MessageBox.Show(dataGridView1.Rows[0].Cells[1].Value.ToString());
///---显示文件内容
textBox2.Text = System.IO.File.ReadAllText(dataGridView1.Rows[0].Cells[1].Value.ToString());
  这里将 数据库中存放文件路径的值放大



大概就是这样了,若看到这里的你对该方案有更好的意见,记得可以留言哦

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息