vs2008 winform能不能把word文档上传存进sql,然后再读取下载下来 求代码 或者方法
Word文档是图文混合数据,可以用SQL2008的FILESTREAM技术保存,数据大小不受2005的2G限制。关于FILESTREAM创建和读写(写包括追加和覆盖),详细内容见C#编程指南但尧编著清华大学出版社2011年1月出版,这里给出一个Word文件写到FILESTREAM列的代码:
private void Form1_Load(object sender, EventArgs e)
{
string connectionString =
"Data Source=.;Initial Catalog=AdventureWorks2008;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("", connection);
command.CommandText = "select Photo.PathName(), "
+"GET_FILESTREAM_TRANSACTION_CONTEXT () "
+"from dbo.employees e WHERE e.EmployeeID=2";
SqlTransaction tran = connection.BeginTransaction(IsolationLevel.ReadCommitted);
command.Transaction = tran;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string path = reader.GetString(0);
byte[] transactionContext = reader.GetSqlBytes(1).Buffer;
//产生SqlFileStream
Stream fileStream = new SqlFileStream(path,
(byte[])reader.GetValue(1),
FileAccess.ReadWrite,
FileOptions.SequentialScan, 0);
//读内容作为字节,写到流中
Stream s = new FileStream(@"..\..\Word1.doc ", FileMode.Open);
s.CopyTo(fileStream);
fileStream.Close();
s.Close();
}
}
tran.Commit(); //提交事务
}
}
以上代码只能在VS2010编译,因为VS2008的FileStream类没有CopyTo方法。二楼说不能可能是指这点。
下面的图是读取示例数据库AdventureWorks2008中的表Production.Document,它的FILESTREAM数据是Word文件。