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

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

 2009-02-26 10:21:54 来源:WEB开发网   
核心提示: 所有存储在Picture列中的二进制数据都不能通过文件系统访问,访问这个二进制数据的唯一方法是通过标准的CRUD (INSERT,使用SQL Server 2008的FILESTREAM特性管理文件(4),UPDATE和 DELETE)SQL语句,下面的例子是向Product表中插入一行数

所有存储在Picture列中的二进制数据都不能通过文件系统访问,访问这个二进制数据的唯一方法是通过标准的CRUD (INSERT,UPDATE和 DELETE)SQL语句,下面的例子是向Product表中插入一行数据:

INSERT INTO Product VALUES(1, 'Bicycle', 0x00, default)
GO

插入的新行ProductID等于1,Name包括Bicycle,Picture列为NULL,RowGuid列包括一些默认的GUID值,现在你可以在.NET程序中检索这一行,当然也可以覆盖和扩展它的内容。

使用FILESTREAM(文件流)写入数据

在这个例子中,假设用户产生了一些输入,要将这些输入内容转换成字节数组,并将其存储在Product表的Picture列中,接下来创建一个Visual C#视窗应用程序,命名为FileStreamExample,在新项目的默认表单上,添加一个按钮,命名为btnWriteFile,一个名叫txtInput的文本输入框(TextBox),一个命名为lstResults的列表框(ListBox),然后,在按钮上双击创建一个click事件处理器,包括清单1中的代码。

清单1 使用FILESTREAM存储数据

private void btnWriteFile_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.Write,
   FileOptions.SequentialScan, 0);
  string contents = txtInput.Text;
  stream.Write((System.Text.Encoding.ASCII.GetBytes(contents)), 
   0, contents.Length);
  stream.Close();
  }
 }
 transaction.Commit();
 }
 MessageBox.Show("File contents successfully written");
}

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

Tags:使用 SQL Server

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