2013-03-17 65 views
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; 
} 

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

+2

这个问题的任何值,由Soner格尼尔编辑似乎很很熟悉。我现在有10个Deja-Vus。告诉我你以前是否问过这个问题? – 2013-03-17 09:14:12

+0

阅读这个问题http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net调试你的代码,并找到哪一行抛出_exception_并修复它。可能你的一个变量是'null',并且在初始化之前尝试使用它。 – 2013-03-17 09:18:02

+0

你可以发布stacktrace吗?或更好地发布您的存储过程..可能是这部分返回null:'Byte [] bytes = command.ExecuteScalar()as byte [];' – 2013-03-17 09:21:44

回答

0

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

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

初始化SqlConnection.ConnectionString属性之前无法打开连接。在你的情况下,你的连接字符串是空字符串。你如何期待这个连接连接到你的SQL服务器?

我的建议是,读一本关于C#和使用数据库使用它像Begining C# 5.0 Databases

对于NullReferanceException,我已经提到我comment你应该做的。

+0

Imho,我认为OP要隐藏他的连接字符串... :) – 2013-03-17 09:29:55

+0

恕我直言,我认为OP不知道他想要什么.. – 2013-03-17 09:31:11

+0

我只是隐藏了我的连接... btw,它现在工作正常..问题是只用程序...非常感谢您的帮助朋友:) – 2013-03-18 05:45:54

0

您可能会收到ExecuteScalar的电话NullReferenceException。从the documentation

返回值

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

强调我的。

而对于它的价值,SqlConnectionSqlCommandDataSetSqlDataAdapter都是IDisposable。你应该打电话给Dispose,虽然the value of disposing DataSet is arguable

+0

问题是只与程序...我清除它,现在的错误已经完成.....非常感谢您的帮助朋友: ) – 2013-03-18 06:23:43

0

尝试运行在SQL Server存储过程,看它是否返回使用

EXEC uspgetimage 'COmma seperated Parameter List'