mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-16 01:25:41 -05:00
Fix for save as Json failure (#216)
* Fix exception due to repeat disposal of stream * Fix off by one index for saving selection * Fix to overwrite file if file already exists * Fix test for Json save selection * Add Json Formatting
This commit is contained in:
@@ -51,7 +51,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
/// <returns>Stream writer</returns>
|
||||
public IFileStreamWriter GetWriter(string fileName)
|
||||
{
|
||||
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
|
||||
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
/// <returns>Stream writer</returns>
|
||||
public IFileStreamWriter GetWriter(string fileName)
|
||||
{
|
||||
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
|
||||
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
// Setup the internal state
|
||||
streamWriter = new StreamWriter(stream);
|
||||
jsonWriter = new JsonTextWriter(streamWriter);
|
||||
jsonWriter.Formatting = Formatting.Indented;
|
||||
|
||||
// Write the header of the file
|
||||
jsonWriter.WriteStartArray();
|
||||
@@ -59,7 +60,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
|
||||
// Write the items out as properties
|
||||
int columnStart = ColumnStartIndex ?? 0;
|
||||
int columnEnd = ColumnEndIndex ?? columns.Count;
|
||||
int columnEnd = (ColumnEndIndex != null) ? ColumnEndIndex.Value + 1 : columns.Count;
|
||||
for (int i = columnStart; i < columnEnd; i++)
|
||||
{
|
||||
jsonWriter.WritePropertyName(columns[i].ColumnName);
|
||||
@@ -84,9 +85,8 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
{
|
||||
// Write the footer of the file
|
||||
jsonWriter.WriteEndArray();
|
||||
|
||||
// This closes the underlying stream, so we needn't call close on the underlying stream explicitly
|
||||
jsonWriter.Close();
|
||||
streamWriter.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
return;
|
||||
}
|
||||
|
||||
FileStream.Flush();
|
||||
FileStream.Dispose();
|
||||
}
|
||||
public virtual void Dispose()
|
||||
|
||||
Reference in New Issue
Block a user