关于SqlConnection的ServerVersion引发的异常!

iloveyoubaby 2008-07-11 10:47:36
我一网站,用asp.net 和C#开发,后台用的是SQL2000,操作系统为Windows 2000 Professional
在web.config中如下配置数据库连接字符串
<appSettings>
<add key ="DatabaseConnection" value="server=.;database=XXX;uid=XXX;pwd=XXX"/>
</appSettings>


在自定义数据库连接类中如下调用:
SqlConnection MyConnection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
SqlCommand MyCommand = new SqlCommand("UserLogin[/color[color=#0000FF]]", MyConnection);其中UserLogin为存储过程,如果登录成功返回用户登录ID,如果失败返回Null

程序在执行到SqlCommand MyCommand = new SqlCommand("UserLogin", MyConnection);时,
报如下错误:-
ServerVersion “MyConnection.ServerVersion”引发了“System.InvalidOperationException”类型的异常
base {"无效操作。连接被关闭。"}
System.SystemException {System.InvalidOperationException}

不知这个错误是否与如下现象是否有关联:
我在Visual Studio 2005中的服务器资源管理器中设定好数据连接后,在下次启动Visual Studio 2005时,上次设定好的数据连接有自动断开,又要重新设置。

另一困惑我的问题:关于ConfigurationManager.ConnectionStrings的问题
...全文
1819 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fellowcheng 2008-07-11
  • 打赏
  • 举报
回复
SqlCommand MyCommand = new SqlCommand("UserLogin", MyConnection);
改为
SqlCommand MyCommand = new SqlCommand();
MyCommand.CommandText = "[UserLogin]";
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Connection = MyConnection;

试下
zkcq2004 2008-07-11
  • 打赏
  • 举报
回复
[UserLogin]..................
sheng9hhd 2008-07-11
  • 打赏
  • 举报
回复
你的MyConnection.open()没有???
JustLovePro 2008-07-11
  • 打赏
  • 举报
回复
是不是你的程序中关闭了没有打开~~
iloveyoubaby 2008-07-11
  • 打赏
  • 举报
回复
找到问题了,是存储过程录入错误,哈哈哈。

上面报告的错误其实不是错误,是正常现象
//实例化一个使用MyConnection打开存储过程UserLogin的数据库命令对象
SqlCommand MyCommand = new SqlCommand("UserLogin", MyConnection);

//定义MyCommand为打开存储过程的数据库命令
MyCommand.CommandType = CommandType.StoredProcedure;

//为MyCommand添加输入参数@LoginID,@passWord
MyCommand.Parameters.Add("@LoginID", SqlDbType.VarChar, 15).Value = LoginName;
MyCommand.Parameters.Add("@PassWord", SqlDbType.VarChar, 50).Value = PassWord;

//为MyCommand添加输出参数@LoginName
MyCommand.Parameters.Add("@LoginName",SqlDbType.VarChar,15);
MyCommand.Parameters["@LoginName"].Direction = ParameterDirection.Output;
//MyCommand.Parameters["@LoginName"].IsNullable=true;

//打开数据库连接
MyConnection.Open();
程序执行到这一步之后,以上错误消失,:
ServerVersion “MyConnection.ServerVersion”引发了“System.InvalidOperationException”
类型的异常
base {"无效操作。连接被关闭。"}
System.SystemException {System.InvalidOperationException}


原因是:在这一句中SqlCommand MyCommand = new SqlCommand("UserLogin", MyConnection);只是告诉MyCommand打开存储过程UserLogin的连接对象是用MyConnection,此时MyConnection还未打开,所以到MyConnection.Open();这以后MyConnection才打开,下一步才执行MyCommand.ExecuteNonQuery()

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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