zaterdag 3 oktober 2009

Reading a file from a SQL BLOB column

Counterpart to the previous post.
Byte[] output = new Byte[255];
long blob = 0;
FileStream stream;
BinaryWriter writer;
SqlConnection connection = DatabaseManager.GetConnection();
string commandText = "SELECT Name, Extension, Blob FROM tablename WHERE FileId=@Id";
SqlCommand command = new SqlCommand(commandText, connection);
command.Connection = connection;
command.CommandText = commandText;
command.Parameters.Add(new SqlParameter("@Id", fileId));
SqlDataReader reader = command.ExecuteReader(CommandBehavior.SequentialAccess);
string fileName = "";
string fileExtension = "";
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
while (reader.Read())
{
fileName = reader.GetString(0);
fileExtension = reader.GetString(1);
string path = filePath + @"\" + fileName + fileExtension;
stream = new FileStream(pad, FileMode.OpenOrCreate, FileAccess.Write);
writer = new BinaryWriter(stream);
long startIndex = 0;
blob = reader.GetBytes(2, startIndex, output, 0, 255);
while (blob == 255)
{
writer.Write(output);
writer.Flush();
startIndex += 255;
blob = reader.GetBytes(2, startIndex, output, 0, 255);
}
writer.Write(output, 0, (int)blob);
writer.Flush();
writer.Close();
stream.Close();
}

Geen opmerkingen:

Een reactie posten