0

データベース (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週==

この仕事をするために私が欠けているものは何ですか?

4

1 に答える 1