Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#、Winform、Sql Server和配置文件_C#_Sql Server_Winforms_App Config - Fatal编程技术网

C#、Winform、Sql Server和配置文件

C#、Winform、Sql Server和配置文件,c#,sql-server,winforms,app-config,C#,Sql Server,Winforms,App Config,我有一个名为xyz.exe的C#winform应用程序。它使用xyz.config文件进行操作。配置文件是一个纯文本文件,我将运行应用程序所需的设置放在其中,例如需要迭代多少次、要读取哪些文件、默认值是什么等等。它工作正常。一切正常。今天我开始处理一些增强请求,我需要连接到sql server数据库并检索一些信息。非常直截了当 如果我运行调试(F5),一切正常。但是如果我在命令提示符下键入xyz.exe来运行它,它会抛出异常“System.Data.SqlClient.SqlConnection

我有一个名为xyz.exe的C#winform应用程序。它使用xyz.config文件进行操作。配置文件是一个纯文本文件,我将运行应用程序所需的设置放在其中,例如需要迭代多少次、要读取哪些文件、默认值是什么等等。它工作正常。一切正常。今天我开始处理一些增强请求,我需要连接到sql server数据库并检索一些信息。非常直截了当

如果我运行调试(F5),一切正常。但是如果我在命令提示符下键入xyz.exe来运行它,它会抛出异常“System.Data.SqlClient.SqlConnectionFactory”的类型初始值设定项抛出异常。“并且它指向连接部分。如果我将xyz.config重命名为其他名称,异常就会消失。如果我创建一个空白的App.config(这将生成xyz.exe.config),异常就会消失

发生了什么事?有人能向我解释一下吗?有什么可能的解决方案、选项和最佳解决方案?可以使应用程序不查找xyz.config和xyz.exe.config,但不引发异常。在我将连接引入db之前,一切正常

SqlConnection connection = new SqlConnection(
                                "user id=xx;" +
                                "password=xx;" +
                                "server=xx;" +
                                "database=xx; " +
                                "connection timeout=xx");

try
{
   connection.Open();
}

catch (Exception e)
{
   Console.WriteLine(e.ToString());
}

try
{
   SqlDataReader myReader = null;
   SqlCommand myCommand = new SqlCommand("select * from xx",
                                                             connection);
   myReader = myCommand.ExecuteReader();
   while (myReader.Read())
   {
      Console.WriteLine(myReader["xx"].ToString());
      Console.WriteLine(myReader["xx"].ToString());
   }
}
catch (Exception e)
{
   Console.WriteLine(e.ToString());
}
connection.Close();

配置文件应命名为
.exe.Config
,例如,如果您的exe名称为
xyz.exe
,则其配置文件名应为
xyz.exe.Config


如果要使用非标准名称,必须手动读取配置文件。

您的配置文件应命名为xyz.exe.config。在命令行中运行的文件夹中,它的名称是这样的吗?我的配置文件是xyz.config。如果我创建了一个空的配置文件(add,new item,App.config),我将拥有xyz.exe。配置文件应命名为.exe.config。如果我没有sql连接,配置文件名似乎不会强制执行(因此我可以使用xyz.config)。这种强制执行是否可以被推翻?或者关闭?为什么不能使用默认名称?你有什么限制吗?我确实手动读取了配置文件。似乎你误解了这个问题。我尝试了一个简单的应用程序,它可以读取SQL Server,我根本不需要任何配置文件。有些东西使您的代码使用了不必要的
SqlConnectionFactory