WEB开发网
开发学院数据库MSSQL Server 使用SQL Server 2008的FILESTREAM特性管理文件 阅读

使用SQL Server 2008的FILESTREAM特性管理文件

 2009-02-26 10:21:54 来源:WEB开发网   
核心提示: 为了简单起见,我只讨论与前面不同的代码,使用SQL Server 2008的FILESTREAM特性管理文件(8),当你创建一个SqlFileStream时,你需要指出你打开的文件流:SqlFileStream stream = new SqlFileStream(path,(byte[]

为了简单起见,我只讨论与前面不同的代码,当你创建一个SqlFileStream时,你需要指出你打开的文件流:

SqlFileStream stream = new SqlFileStream(path,
(byte[])reader.GetValue(1),FileAccess.Read,
FileOptions.SequentialScan, 0);

接下来,读取文件流的内容,转换成字节数组,再转换成字符串,最后在列表框(ListBox)中显示出来:

int length = (int) stream.Length;
byte[] contents = new byte[length];
stream.Read(contents,0,length);                     
string results = System.Text.Encoding.ASCII.GetString
(contents);
lstResults.Items.Add(results);

当你运行这个应用程序时,你会看到一个类似于图2的屏幕,当你点击“写入文件”按钮时,应用程序把文本框(TextBox)中的内容写入到文件流中;当你点击“读取文件”按钮时,应用程序从文件流读取内容,将其显示在列表框(ListBox)中。

图2 示例项目-通过使用SqlFileStream类读取和写入FILESTREAM列中的内容

使用SQL Server 2008的FILESTREAM特性管理文件

接下来的例子显示如何扩展现有数据库中的文件流。

使用FILESTREAM追加数据

增加一个命令按钮,命名为btnAppendFile,使用清单3中的代码作为它的click事件处理程序代码。

清单3 使用FILESTREAM追加数据

FILESTREAM. 
private void btnAppendFile_Click(object sender, EventArgs e)
{
string connectionString =  
ConfigurationManager.ConnectionStrings
["fileStreamDB"].ConnectionString;                          
using (SqlConnection connection = new
SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
//Get the PathName of the File from the database
command.CommandText = "SELECT Picture.PathName(), "
+ "GET_FILESTREAM_TRANSACTION_CONTEXT() FROM Product "
+ "WHERE ProductID = 1";
SqlTransaction transaction =
connection.BeginTransaction(IsolationLevel.ReadCommitted);
command.Transaction = transaction;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string path = reader.GetString(0);                       
SqlFileStream stream = new SqlFileStream(path,
(byte[])reader.GetValue(1), FileAccess.ReadWrite,
FileOptions.SequentialScan, 0);
stream.Seek(0, SeekOrigin.End);
string contents = txtInput.Text;
stream.Write((System.Text.Encoding.ASCII.GetBytes
(contents)), 0, contents.Length);                       
stream.Close();
}
}
transaction.Commit();
}
MessageBox.Show("File contents successfully appended");
}
 

上一页  3 4 5 6 7 8 9  下一页

Tags:使用 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接