繁体   English   中英

如何在SQL Filetable中的目录下插入文件

[英]How to insert a file under a directory in SQL Filetable

我在文件表中创建了一个目录。 现在我需要在该目录中插入文件。 由于无法设置parent_path_locator,我想不出如何实现这一点。 我在代码中做了所有这些。

这就是我创建目录的方式;

 Dim insertDir = "insert into dbo.DocumentStore(name,is_directory,is_archive) output INSERTED.path_locator values(@name,1,0)"
    Using sqlCommand As New SqlCommand(insertDir, con)
        sqlCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = Me.txtGroupName.Text
        parentPathLocator = sqlCommand.ExecuteScalar()
    End Using

注意:我看到我们可以使用dbo.GetNewPathLocator(path)来获取基于路径定位器的子目录路径。 但我不知道如何在我的情况下使用它来插入文件。

更新:我发现如何在TSQL TSQL中执行此操作,但如何在代码中执行此操作?

最后我想出了如何做到这一点:

创建文件夹并获取路径定位器

 Dim insertDir = "insert into dbo.DocumentStore(name,is_directory,is_archive) output INSERTED.path_locator values(@name,1,0)"
 Using sqlCommand As New SqlCommand(insertDir, con)
     sqlCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = Me.txtGroupName.Text
     parentPathLocator = sqlCommand.ExecuteScalar()
 End Using

创建一个新的hierachyID

 Dim retnewpath = "select CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 1, 6))) +'.'+ CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 7, 6))) +'.'+ CONVERT(VARCHAR(20), CONVERT(BIGINT, SUBSTRING(CONVERT(BINARY(16), NEWID()), 13, 4))) as path"

 Using sqlCommand As New SqlCommand(retnewpath, con)
     subpathlocator = sqlCommand.ExecuteScalar()
     subpathlocator = parentPathLocator.ToString() & subpathlocator & "/"
 End Using

插入带有新hierarchyid作为路径定位器的文件

 Dim insertStr = "insert into dbo.DocumentStore(name,file_stream,path_locator) output INSERTED.stream_id values(@name,@file_stream,@parent_path_locator)"

 Using sqlCommand As New SqlCommand(insertStr, con)
    sqlCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = Path.GetFileName(filename)
    sqlCommand.Parameters.Add("@file_stream", SqlDbType.VarBinary).Value = fileStream
    sqlCommand.Parameters.AddWithValue("@parent_path_locator", subpathlocator)
    streamID = sqlCommand.ExecuteScalar()

 End Using

我用这个链接来创建hierachyId,所以我还没完全理解它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM