Ошибка вставки байтового массива в поле varbinary в базе данных SQL Server CE 3.5 - PullRequest
0 голосов
/ 21 февраля 2012

Я боролся с этим некоторое время.Может кто-нибудь сказать мне, что я делаю неправильно?

Вот мой объект C #:

class FileObject
{
     public int LocalInx { get; set; }
     public byte[] File { get; set; }
     public string FileName { get; set; }
}

Вот как я заполняю массив байтов файлом:

var FO = new FileObject();
FO.LocalInx = LocalInx;
FileInfo fi = new FileInfo(ti.Name);
FO.FileName = fi.Name;
FileStream fs = File.OpenRead(ti.Name);

try
{
    byte[] bytes = new byte[fs.Length];
    fs.Read(bytes,0,Convert.ToInt32(fs.Length));
    fs.Close();
    FO.File = bytes;
}
finally
{
    fs.Close();
}

А вот как я добавляю строку в таблицу.Здесь я получаю сообщение об ошибке.

if (o is FileObject)
{
    var fpc = new SqlCeCommand("insert into Files (File, UtilityMap, NotApplicable, LocalInx, FileName) values (@File, 1, 0, @LocalInx, @FileName)", con);
    fpc.Parameters.Add("@File", SqlDbType.VarBinary, 8000).Value = ((FileObject)o).File;
    fpc.Parameters.AddWithValue("@LocalInx",((FileObject)o).LocalInx);
    fpc.Parameters.AddWithValue("@FileName", ((FileObject)o).FileName);
    fpc.ExecuteNonQuery(); 
}
...