C# Sql连接在版本中不工作
我的程序有问题,一切都在调试模式下工作,但当我切换到发行版时,我得到InvalidOperationException: 这是我的连接字符串C# Sql连接在版本中不工作,c#,sql,sql-server,sql-server-express,C#,Sql,Sql Server,Sql Server Express,我的程序有问题,一切都在调试模式下工作,但当我切换到发行版时,我得到InvalidOperationException: 这是我的连接字符串 Data Source=.\\SQLEXPRESS;Initial Catalog=visondb; User ID=sql; Password=test;Connect Timeout=30; Asynchronous Processing = true; 我尝试使用 try { // await
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时,我只会看到窗口“程序停止响应”
在何处查找错误?我的最佳猜测(基于此处有限的信息)是您从发布版的Properties.Settings中提取的值之一。生成连接字符串的默认值为
- 空白(空字符串),或
- 不是你期望的那样
因此创建了一个无效的连接字符串
您应该在\u sqlcon.Open()之前在线调试编码>并确保连接字符串与您在发布模式下的预期一致。为什么不在配置中使用连接字符串?您是对的,但调试和发布的连接字符串可能不同。第一个有效的连接字符串是Data Source=。\SQLEXPRESS;初始目录=visondb;用户ID=sql;连接超时=30;异步处理=真;第二个数据源=。\\SQLEXPRESS;初始目录=visondb;用户ID=sql;密码=测试;连接超时=30;异步处理=真@user1938408其中哪一个是调试版本,哪一个是发布版本?我被你的评论弄糊涂了。@user1938408你确定你在这里显示了全部代码吗?这里的第一个注释中缺少代码显示的硬编码到字符串中的内容…当我使用_sqlcon.ConnectionString=@“Data Source=“…”时,数据源中的“\”数有问题。。。。。。在visual debug and release中有“\”但是当我从目录中启动exe时,我得到“\”如何修复此问题?@user1938408在添加“@”指令后是否确保成功重新发布exe?因为听起来这解决了你的问题。
try
{
// await dbConnAsync(_sqlcon);
_sqlcon.Open();
}
catch (SqlException ex)
{
MessageBoxResult result = System.Windows.MessageBox.Show(ex.ToString());
}