C# 未将对象引用设置到对象的实例

灰鸽 2012-10-24 10:07:20
错误:未将对象引用设置到对象的实例
这个DBHelper的ConnectionDatabase()老是连接失败,导致GetReader出错:未将对象.....
菜a。。。


/// <summary>
/// 连接数据库
/// </summary>
/// <returns></returns>
public bool ConnectionDatabase()
{
if (!isConnected)
{
try
{
if (connection == null)
{
connString = ConfigurationManager.ConnectionStrings["TerminalFixtureDB"].ToString();

connection = new SqlConnection(connString);
connection.Open();
}
if (command == null)
{
command = new SqlCommand();
}
command.Connection = connection;
}
catch
{
isConnected = false;
return false;
}
}
isConnected = true;
return true;
}





/// <summary>
/// 返回DataReader
/// </summary>
/// <param name="sqlOrProcedureName">Sql语句或者存储过程名</param>
/// <param name="isProcedure">是否存储过程,存储过程(true)</param>
public SqlDataReader GetReader(string sqlOrProcedureName, bool isProcedure)
{
if (ConnectionDatabase())
{
if (isProcedure)
command.CommandType = CommandType.StoredProcedure;
else
command.CommandText = sqlOrProcedureName;
}
return command.ExecuteReader();

}


...全文
202 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
重要的是数据多的时候才会报错,少的时候不会报
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

调试,出错的行中肯定有null对象
[/Quote]
try
{
if (connection == null)
{
connString = ConfigurationManager.ConnectionStrings["TerminalFixtureDB"].ToString();

connection = new SqlConnection(connString);
connection.Open();
}
if (command == null)
{
command = new SqlCommand();
}
command.Connection = connection;
}
catch
{
isConnected = false;
return false;
}
好像这里出问题了:ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。Connection不可用?????
Pineasy 2012-10-24
  • 打赏
  • 举报
回复
打开连接的时候判断一下是否打开,
断点跟进去,找到具体的NULL
xz_life 2012-10-24
  • 打赏
  • 举报
回复
一定是有对象为null,或者再调用对象之前对象被设置null
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

连接字符串不对?。。。
[/Quote]这个不是
oh51888 2012-10-24
  • 打赏
  • 举报
回复
打断点单步调试
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 2 楼 的回复:

单步判断哪个为null


就是ConnectionDatabase是关闭的,有时候报:ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。
有什么改进的没有???
[/Quote]
而且是执行数据少的时候不会出现,多的时候才会
灰鸽 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

单步判断哪个为null
[/Quote]

就是ConnectionDatabase是关闭的,有时候报:ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。
有什么改进的没有???
lyh2ysy 2012-10-24
  • 打赏
  • 举报
回复
打个段点调试下,看看哪个是null?
快溜 2012-10-24
  • 打赏
  • 举报
回复
连接字符串不对?。。。
bdmh 2012-10-24
  • 打赏
  • 举报
回复
调试,出错的行中肯定有null对象
wuyq11 2012-10-24
  • 打赏
  • 举报
回复
单步判断哪个为null
灰鸽 2012-10-24
  • 打赏
  • 举报
回复

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧