我的代码是:

Stream strm = ShowEmpImage(empno);

public Stream ShowEmpImage(int empno)
    {

        string conn = ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;
        SqlConnection connection = new SqlConnection(conn);
        string sql = "select Cust_Image from Cust_M_Tbl  where Cust_FID = '"+empno+"'";
        SqlCommand cmd = new SqlCommand(sql, connection);
        cmd.CommandType = CommandType.Text;
        connection.Open();
        object img = cmd.ExecuteScalar();
            try
            {

                return new MemoryStream((byte[])img);    ////Exception generated here

            }
            catch
            {
                return null;
            }
            finally
            {
                connection.Close();
            }

    }

我正在使用VS2008,C#,ASP.NET 3.5 Framework,SQL Server2005。任何帮助将不胜感激。 问候。

===============>>#1 票数:1

可以尝试许多帮助您,但问题尚未明确。 前面的问题中,我可以看出问题是-字段Cust_Image是varchar,并且您尝试将其转换为二进制。

所以解决方案应该是这样的:

return new MemoryStream(Convert.FromBase64String(img.ToString())); 

===============>>#2 票数:0

方案1:

string conn = ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;

将此行用作:

string conn = string.Empty;
if(ConfigurationManager.ConnectionStrings["dbcon"] != null)
{
    conn = ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;
}

如果未在app.config文件中设置dbcon密钥,则无法访问ConnectionString属性,因为ConfigurationManager.ConnectionStrings [“ dbcon”]将为您提供null。

方案2:

object img = cmd.ExecuteScalar();

在代码中使用img对象之前,请检查其是否为null。

===============>>#3 票数:0

如果数据库中没有针对指定员工编号的行,则会发生这种情况。

我们需要在将结果转换为字节数组之前进行检查。

尝试这个:

public static string ConnectionString = 
    ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString;

public Stream ShowEmployeeImage(int employeeNumber)
{
    using (var conn = new SqlConnection(ConnectionString))
    {
        const string query = 
            "select Cust_Image from Cust_M_Tbl where Cust_FID = '@empNo'";

        using (var command = new SqlCommand(query, conn))
        {
            command.Parameters.AddWithValue("@empNo", employeeNumber.ToString());
            conn.Open();

            var image = command.ExecuteScalar();

            return image == null ? null : new MemoryStream((byte[]) image);
        }
    }
}

  ask by sun translate from so

未解决问题?本站智能推荐: