Нет необходимости преобразовывать ваш байтовый массив в строку со значением 64. Вы просто в конечном итоге будете использовать больше места в вашей базе данных. Кроме того, тогда вы фактически будете иметь данные TEXT в вашей базе данных sqlite, а не BLOB.
Что вам нужно сделать, это использовать SqliteParameters, например, чтобы вставить свой BLOB, вы можете сделать что-то вроде этого:
SQLiteCommand command = cnn.CreateCommand();
command.CommandText = String.Format("INSERT INTO registry" +
"(NameDoc, YearDoc, MonthDoc, DayDoc, RawDoc) VALUES" +
"('{0}', '{1}', '{2}', '{3}', @0)",
txtNameDoc.Text, numUDYear.Value, numUDD.Value, numUDD.Value);
SQLiteParameter parameter = new Parameter("@0", System.Data.DbType.Binary);
parameter.Value = rawDoc;
command.Parameters.Add(parameter);
command.ExecuteNonQuery();
Когда вы извлекаете BLOB, получите его из SQliteDataReader следующим образом:
byte[] imageBytes = (System.Byte[])myDataReader["RawDoc"];
EDIT
Чтобы ответить на ваш комментарий, я предполагаю, что ваш поток должен быть перемотан. В любом случае, я бы сделал так больше:
MemoryStream ms = new MemoryStream(imageBytes);
PictureBox picBox = new PictureBox();
picBox.Image = Image.FromStream(ms, true);
РЕДАКТИРОВАТЬ 2
Тогда я думаю, что проблема в том, как вы извлекаете данные из вашего DataReader; попробуйте что-то вроде этого:
string raw = "";
while (myDataReader.Read())
raw = (string)myDataReader["RawDoc"];
Вероятно, это все еще не работает, поскольку циклы повторяются по всем извлеченным записям, поэтому вы получите изображение последней извлеченной записи.