First of all I suggest you to rewrite your AddWithValue code like this:
cmd.Parameters.AddWithValue("@FirstName", SqlDbType.NVarChar).Value = firstNameTextBox.Text;
cmd.Parameters.AddWithValue("@FirstName", firstNameTextBox.Text);
Please see
SqlParameterCollection.AddWithValue Method[
^] for details. AddWithValue expects value, not SqlDbType.
You also could convert values to respective data types of parameters (text to int integer etc) and put this value as second argument.
Secondly. Have you debugged your code? Are you sure that ReadFile method really reads anything from file?
I think not. You should modify your code of ReadFile method. This code does not read anything and your data buffer stays always with 0 bytes long and your stored procedure always receives 'null'. Consider to rewrite this method like following:
byte[] ReadFile(string sPath)
{
MemoryStream mstr = new MemoryStream();
byte[] data = mstr.GetBuffer();
FileInfo fInfo = new FileInfo(sPath);
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fStream);
mstr.SetLength(fStream.Length);
fStream.Read(mstr.GetBuffer(), 0, (int)fStream.Length);
byte[] data = mstr.GetBuffer();
return data;
}
Good luck :)