从数据库调用字节时出错

时间:2013-03-17 09:11:25

标签: c# .net sql-server ado.net

我在SQL Server中存储了一个图像。首先,我已将图像转换为字节,并且已将其保存在SQL Server中并且非常完成了保存.....当我尝试从我保存的SQL Server调用相应图像的字节值时以及当我尝试实现该图像时在C#中,我收到类似

的错误
  

NullReferenceException未被用户代码

处理      

对象引用未设置为对象的实例

这是我的代码:

protected void GetImageButton_OnClick(object sender, EventArgs e)  
{  
    SqlConnection connection = new SqlConnection();  
    connection.ConnectionString = @"";  
    connection.Open();  
    SqlCommand command = new SqlCommand();  
    command.Connection = connection;  
    command.CommandType = CommandType.StoredProcedure;  
    command.CommandText = "uspgetimage";  
    command.Parameters.AddWithValue("@imageID", getimagebutton.Text);  
    DataSet dataset = new DataSet();  
    SqlDataAdapter adapter = new SqlDataAdapter();  
    adapter.SelectCommand = command;  
    adapter.Fill(dataset);  
    Byte[] bytes = command.ExecuteScalar() as byte[];  
    string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);  
    Image.ImageUrl = "data:image/jpeg;base64," + base64String;  
}  

请看看它并帮助我从这些朋友那里离开。

3 个答案:

答案 0 :(得分:0)

NullReferanceException 之前,我不相信这行不会抛出任何异常..

SqlConnection connection = new SqlConnection();  
connection.ConnectionString = @"";  
connection.Open();

在初始化SqlConnection.ConnectionString属性之前,无法打开连接。在您的情况下,您的连接字符串是空字符串。您如何期望此连接连接到您的SQL Server?

我的建议是,阅读一本关于C#的书,并将其与 Begining C# 5.0 Databases等数据库一起使用

对于 NullReferanceException ,我已经在 comment 中提到了你应该做的事情。

答案 1 :(得分:0)

您可能会在致电NullReferenceException时收到ExecuteScalar。来自the documentation

  

返回值

     

结果集中第一行的第一列,或空引用...如果结果集为空

强调我的。

值得一提的是,SqlConnectionSqlCommandDataSetSqlDataAdapter都是IDisposable。您应该在Dispose上调用{{1}},但the value of disposing DataSet is arguable

答案 2 :(得分:0)

尝试在SQL Server中运行存储过程,以查看它是否使用

返回任何值
EXEC uspgetimage 'COmma seperated Parameter List'