データベース (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ストアド プロシージャは、1 つのパラメーター@contentだけを受け取り、それを varbinary(max) 列に挿入します。これまでのところ、すべてが期待どおりに機能しているようです。varbinary(max) 列に何が入っているかはわかりません。バイナリデータとだけ表示されているためですが、少なくとも何かがあります。
次に、挿入したばかりの行を選択して、最初に持っていた 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 変数には値のみが含まれています。
7週==
この仕事をするために私が欠けているものは何ですか?