Hi every one.
I have file with less than 10 mbyte
I want save it into sql. I convert it to array of bytes.then save it into sql.type of this field in sql is varbinary(max).
when I retrieve file from sql size of file is 13 byte.
where is my bug?
Code that I use for Convert File to Array Of bytes
public static byte[] ConvertFileToBytes(string location, ref string FileName)
{
FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(fs);
byte[] data = reader.ReadBytes((int)fs.Length);
FileName = fs.Name.Substring(fs.Name.LastIndexOf("\\") + 1);
fs.Close();
return data;
}
Code that I use for Save data into Sql
internal static void SaveAutocadFileOnDataBase(string MapCode, byte[] dataElecMap, string dataElecMapName, byte[] dataCivilMap, string dataCivilMapName, byte[] dataArchiMap, string dataArchiMapName, byte[] dataMechaMap, string dataMechaMapName)
{
string sqlcommand = string.Concat("INSERT INTO AutoCadFiles VALUES ('", MapCode, "' , ", "cast ('", dataElecMap, "' as varbinary(max)),", " '", dataElecMapName, "' ",
" , cast ('", dataCivilMap, "' as varbinary(max)) ,", " '", dataCivilMapName, "' ", " , cast ('", dataArchiMap, "' as varbinary(max)) ,", " '", dataArchiMapName, "' ",
" , cast ('", dataMechaMap, "' as varbinary(max)) ,", " '", dataMechaMapName, "' ", ")");
ExecuteNonQuery(sqlcommand);
}
Code that I use for Retrieve data from Sql
private static void GetBinaryFiles(string MapNumber, string MapType)
{
byte[] fileread = new byte[10000000];
byte[] file = null;
string fileName = null;
SqlConnection SqlConnction = null;
DataTable dt = new DataTable();
string SqlCommand = "Select " + MapType + "Name From AutoCadFiles Where MapCode ='" + MapNumber + "'";
SqlCommand sqlcom = GetConnection(SqlCommand, ref SqlConnction);
sqlcom.Parameters.Add("@MapCode", SqlDbType.Int).Value = MapNumber;
fileName = (string)sqlcom.ExecuteScalar();
sqlcom.Dispose();
SqlCommand = "Select CAST(ArchitecturalMap As varbinary(max)) From AutoCadFiles Where MapCode ='" + MapNumber + "'";
sqlcom = GetConnection(SqlCommand, ref SqlConnction);
sqlcom.Parameters.Add("@MapCode", SqlDbType.Int).Value = MapNumber;
fileread = (byte[])sqlcom.ExecuteScalar();
SqlConnction.Close();
}
thanks.