2

画像を SQL Server データベースに保存しようとしていますが、うまくいきません。

私のテーブルのPicture列は型であり、画像を含むバイト配列を列に渡そうとしていますCustomersimagePicture

私のコードは次のようなものです:

SqlConnection conn = new SqlConnection("my working connection string");
SqlDataAdapter adapter = new SqlDataAdapter("Select * from Customers", conn);

DataSet ds = new DataSet("Customers");

adapter.Fill(ds);

次に、画像のバイト配列を作成します。

string path = null;
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.ShowDialog();

path = fileDialog.FileName;

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);

byte[] picArray = new byte[fs.Length];
fs.Read(picArray, 0, Convert.ToInt32(fs.Length));
fs.Close();

これは、データベースに値を渡す方法です。

DataRow row = ds.Tables[0].NewRow();
row["Id"] = "ID";
row["Name"] = "NAME";
row["Picture"] = picArray;
ds.Tables[0].Rows.Add(row);

adapter.Update(ds);

問題は次の行です。

row["Picture"] = picArray;

写真は送信されませんが、配列には写真があります...

私は何を間違っていますか?ありがとう

4

2 に答える 2

0

問題を修正しました!:D

@DanSnellが言ったことで、自分が間違っていたことを考えさせられました。

接続とアダプターのコードは問題ないので、パラメーターを介して画像を含むバイト配列を渡す代わりに、null byte array

そのため、バイト配列を新しい行に追加するrow["Picture"] = picArray;と、列 Picture は値を受け取りませんでした。null 値だけです。

バイト配列をクラス内に渡す方法を修正するだけで、問題は解決しました。

上記のコードは変更していないので、C# から SQL Server データベースにイメージを保存したい人に役立つかもしれません。

于 2013-06-29T21:21:19.427 に答える