1

テーブルからロードCODEして、最終的なjpgの名前として使用しようとしています...しかし、各画像に彼の名前とコードをどのように使用できるかわかりません...アイデアはありますか?NAME_IMAGEIMAGES

SqlConnection connection = new SqlConnection("*****");
connection.Open();
SqlCommand command = new SqlCommand("SELECT IMAGE,NAME_IMAGE,CODE FROM IMAGES", connection);
byte[] buffer = (byte[]) command.ExecuteScalar ();
connection.Close();
FileStream fs = new FileStream(@"C:\Users\L\Desktop\\" + (CODE) + "_" + (NAME_IMAGE) + ".jpg", FileMode.Create);
fs.Write(buffer, 0, buffer.Length);
fs.Close();
4

1 に答える 1

2

複数の列を読み取っていて、where句がないため、ここでの最初の問題ExecuteScalarは、最初の行の最初の列のみを読み取るように設計されていることです。ここではそうではないので、ExecuteReader代わりに見てください。または、 「dapper」などのリーダーをラップするツール:

using(var connection = new SqlConnection("*****"))
{
    var data = connection.Query("SELECT IMAGE,NAME_IMAGE,CODE FROM IMAGES");
    foreach(dynamic row in data)
    {
        byte[] data = row.IMAGE; // yes, as simple as that
        string name = row.NAME_IMAGE;
        //... do something with data / name
    }
}

または未加工の ADO.NET 経由:

using(var connection = new SqlConnection("*****"))
using(var cmd = connection.CreateCommand())
{
    cmd.CommandText = "SELECT IMAGE,NAME_IMAGE,CODE FROM IMAGES";
    connection.Open();
    using(var reader = cmd.ExecuteReader())
    {
        while(reader.Read())
        {
            byte[] data = (byte[])reader["IMAGE"];
            string name = (string)reader["NAME"];
            // ...
        }
    }
}
于 2013-09-09T08:16:57.930 に答える