SQL Server数据库中的文件名

时间:2013-09-09 08:10:55

标签: c# sql sql-server

我尝试从表CODE加载NAME_IMAGEIMAGES作为最终jpg的名称...但我不知道如何使用每张图片他的名字和代码......你有什么想法吗?

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();

1 个答案:

答案 0 :(得分: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"];
            // ...
        }
    }
}