1

我在 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;  
}  

请看看它并帮助我摆脱这些朋友。

4

3 回答 3

0

NullReferenceException之前,我不相信这行不会引发任何异常。

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

SqlConnection.ConnectionString在初始化属性之前无法打开连接。在您的情况下,您的连接字符串是一个空字符串。您希望此连接如何连接到您的 sql 服务器?

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

对于NullReferenceException,我已经在评论中提到了你应该做什么。

于 2013-03-17T09:29:06.767 回答
0

尝试在 SQL Server 中运行存储过程,看看它是否返回任何值

EXEC uspgetimage 'COmma seperated Parameter List'
于 2013-03-18T06:29:03.147 回答
0

您很可能会NullReferenceException从您的电话中收到ExecuteScalar. 从文档中

返回值

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

强调我的。

至于它的价值,SqlConnection, SqlCommand,DataSetSqlDataAdapter都是IDisposable。你应该呼吁Dispose他们,尽管处置的价值DataSet是有争议的。

于 2013-03-17T09:40:04.633 回答