2013-03-08 72 views
0

我有麻烦,我的程序不能正常工作,一切工作在调试模式,但是当我切换到释放我得到InvalidOperationException异常:SQL连接在释放

_sqlcon.ConnectionString = "Data Source=" + Properties.Settings.Default.serverAdress + ";" + "Initial Catalog=" + Properties.Settings.Default.initialDB + "; User ID=" + Properties.Settings.Default.sqlID + "; Password=" + Properties.Settings.Default.sqlPass + ";" + "Connect Timeout=" + Properties.Settings.Default.timeOut + "; Asynchronous Processing = true;"; 

这是我的连接串

Data Source=.\\SQLEXPRESS;Initial Catalog=visondb; User ID=sql; Password=test;Connect Timeout=30; Asynchronous Processing = true; 

,我尝试用简单的打开连接

 try 
     { 
      // await dbConnAsync(_sqlcon); 
      _sqlcon.Open(); 
     } 
     catch (SqlException ex) 
     { 
      MessageBoxResult result = System.Windows.MessageBox.Show(ex.ToString()); 
     } 

但在发布它不工作,当我使用exe我只是得到窗口“程序停止响应”。

在哪里寻找错误?

+2

为什么不在配置中使用连接字符串? – 2013-03-08 20:07:49

回答

1

我最好的猜测(基于这里的信息有限)将是你从你的发布Properties.Settings.Default拉动值来生成您的连接字符串中的一个或者是

  • 空白(空字符串)或
  • 不是你所期望的。

因此创建一个无效的连接字符串。

您应该在_sqlcon.Open();之前在线上进行调试,并确保连接字符串与您在发布模式时所期望的一致。

+0

你是对的,但是如何从调试和发布连接字符串是不同的第一个工作是 数据源=。\ SQLEXPRESS;初始目录= visondb;用户ID = sql;连接超时= 30;异步处理= true; 和第二个 数据源=。\\ SQLEXPRESS;初始目录= visondb;用户ID = sql;密码=测试;连接超时= 30;异步处理= true; – user1938408 2013-03-08 20:36:39

+0

@ user1938408哪一个是调试版,哪个版本?我对你的评论感到困惑。 – jadarnel27 2013-03-08 20:44:04

+0

@ user1938408您确定您要在此处显示整个代码吗?你在这里的第一个注释中缺少的东西是你的代码显示的是*硬编码*到字符串中...... – jadarnel27 2013-03-08 20:45:36