2014-05-13 32 views
0

我在文件表中創建了一個目錄。現在我需要在該目錄中插入文件。由於parent_path_locator無法設置,我無法想象如何實現這一點。我正在做所有這些代碼。如何在SQL文件表中的目錄下插入文件

這是我如何創建目錄;

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(路徑),以獲得基於路徑定位的子目錄路徑。但我不知道如何在我的情況下使用這個插入文件。

更新:我發現如何在TSQL TSQL中做到這一點,但如何在代碼中做到這一點?

回答

2

最後我想通了,如何做到這一點:新HIERARCHYID爲路徑定位

創建文件夾並得到路徑定位

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 

插入文件

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 

我用這個link來創建hierachyId,所以我還沒完全理解它。

相關問題