【发布时间】:2016-06-30 04:42:21
【问题描述】:
我正在尝试调试我的源代码
异常:System.InvalidOperationException
消息:内部 .Net Framework 数据提供程序错误 1。
堆栈跟踪:在 System.Data.ProviderBase.DbConnectionInternal.PrePush(对象 预期所有者)在 System.Data.ProviderBase.DbConnectionPool.PutObject(DbConnectionInternal obj,对象拥有对象)在 System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection 拥有对象,DbConnectionFactory 连接工厂)在 System.Data.SqlClient.SqlConnection.CloseInnerConnection() 在 System.Data.SqlClient.SqlConnection.Close() 在 System.Data.SqlClient.SqlConnection.Dispose(布尔处理)在 System.ComponentModel.Component.Dispose()
我在日志文件中看到的并且我认为会导致 502 错误的错误。我与数据库的所有交互(我正在尝试以最老派的方式进行此操作)就像
public List<VersionInfo> GetAllVersions ( )
{
List<VersionInfo> Versions = new List<VersionInfo>();
using (SqlConnection con = new SqlConnection(SurveyDbModel._conn))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("GetAllVersions",con))
{
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
Versions.Add(new VersionInfo
{
Id = !dataReader.IsDBNull(0) ? dataReader.GetInt32(0) : default(int),
Title = !dataReader.IsDBNull(1) ? dataReader.GetString(1) : String.Empty
});
}
}
}
con.Close();
}
return Versions;
}
我在做usings 对吗?有什么嵌套错误吗?
【问题讨论】:
-
为什么要关闭连接?我想在
using语句连接关闭之后。 -
你能链接配置文件吗?也许您的提供程序/连接字符串有问题
-
去掉那个多余的
con.Close();,看看它是否仍然存在。 -
@ragerory 所以我不应该在
using (SqlConnection con = new SqlConnection(SurveyDbModel._conn))中使用con.Close()?是多余的吗? -
连接被释放时会关闭,是的。