我在从数据库(它是 localDB)的 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 是我添加的行的 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==
知道我缺少什么来完成这项工作吗?