У меня возникла проблема со вставкой или выбором данных из столбца varbinary(max) в моей базе данных (это локальная БД), и я не могу понять, почему.
Я добавляю двоичные данные из приложения C# следующим образом.
SqlConnection con = new SqlConnection("<connection string...>");
SqlCommand cmd = new SqlCommand("sp_test_varbinary", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@content", SqlDbType.VarBinary, -1).Value = Convert.FromBase64String("<base64 string>");
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Хранимая процедура sp_test_varbinary принимает только один параметр @content и вставляет его в столбец varbinary(max) — пока все работает, как и ожидалось. Я не могу сказать, что находится в столбце varbinary(max), так как там просто написано binary data, но там хоть что-то есть.
Затем, когда я пытаюсь выбрать строку, которую я только что вставил, и пытаюсь вернуть исходную строку base64, которая у меня была изначально, что-то идет не так или данные в поле неверны.
Я делаю следующее (file_id — это идентификатор строки, которую я добавил).
SqlDataAdapter da = new SqlDataAdapter("SELECT [content] FROM [BaseFiles] WHERE ([file_id] = '" + file_id + "');", con);
DataSet ds = new DataSet();
da.Fill(ds);
string base64 = Convert.ToBase64String((byte[])ds.Tables[0].Rows["content"]);
Однако на данный момент переменная base64 содержит только значение:
7w==
Любая идея, что мне не хватает, чтобы сделать эту работу?