C#控制台应用程序无效的操作异常

mnl*_*her 8 c# sql-server console invalidoperationexception

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;

namespace BissUpdater
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=H....; 
                Initial Catalog=LANDesk; Persist Security Info=True; 
                User ID=Mainstc; Password=xxxxxxxx";

            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SQL Connection引发了无效的操作异常.

"无效操作.连接已关闭".

这是我的完整代码.在另一个程序中,它完美无缺.

这是第二次,这不起作用.我正在使用VS2005 ...也许我的程序已损坏?

堆栈跟踪:

在System.Data.SqlClient.SqlConnection.get_ServerVersion()
的System.Data.SqlClient.SqlConnection.GetOpenConnection()处

Biz*_*pps 14

这样做的正确方法应该是这样的:

static void Main(string[] args) {
    string connectionString = "Data Source=H....; 
    Initial Catalog=LANDesk;User ID=Mainstc; Password=xxxxxxxx"; 
    // removed Persist Security Info=True; 


    using(SqlConnection con = new SqlConnection(connectionString))
    {
      if (con.State==ConnectionState.Closed)
      {                      
          con.Open();   
      }
    }


}
Run Code Online (Sandbox Code Playgroud)

使用Using Statement它将自动处理您的SQL连接.

另请检查:在MSDN上使用ADO.NET的最佳实践

其他事项:使用SQL Management Studio并尝试使用连接字符串中的sql身份验证登录凭据,如果使用该帐户成功连接到数据库,则上述代码应该适合您.

最好的祝福

  • 我同意,由于使用声明,这段代码更好,但我认为这不会解决问题. (3认同)
  • 检查con是否为Open有什么意义?显然不是-您只是“重新”创建了对象。 (3认同)