App.Config连接字符串格式

时间:2017-07-31 11:12:51

标签: c# sql app-config

在我的App.Config中,我有以下部分:

<appSettings>

  <add key="dbConn" value="Server=myServer;Database=Database;Trusted_Connection=True;Connection Timeout=600" />

</appSettings>

我通过执行以下操作来抓住这一行:

static DbRepository repo = new DbRepository(new DbRepositoryConfig
{
    ConnectionString = ConfigurationManager.AppSettings["dbConn"]
 });

我将数据传递到我需要的地方,然后传递给我的类构造函数,如下所示:

FileUpload files = new FileUpload(repo, outPutFolder);

最后,我将其设置在目标类中的所需位置,如下所示:

 private static DbRepository databaseConnectionString;

// how I'm using it
   var connectionString = databaseConnectionString;
        using (var conn = new SqlConnection(connectionString.ToString()))
        {
            conn.Open();
            using (var command = conn.CreateCommand())
            {
                command.CommandType = CommandType.Text;
                command.CommandText = sqlstring;
                loadContextId = (int)command.ExecuteScalar();
            }
        }

为了简短起见,我省略了FileUpload类上的实际构造函数。我调试了我的项目,所有内容都得到了修正,但是当我的项目进入using语句时,我的项目失败了。

我得到的错误是:

  

初始化字符串的格式不符合规范   从索引0开始。

对此的快速搜索告诉我,我的连接格式存在问题,所以我通过将连接线直接粘贴到方法中来测试它,我的项目运行正常。所以我不知道为什么会发生这种情况,因为我的SQL连接看起来是正确的。

有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:2)

因为您正在将DbRepository对象本身(databaseConnectionString)读入您的connectionString变量,而不是ConnectionString属性。因此,除非您重写DbRepository.ToString()以返回连接字符串,否则您不会返回连接字符串而只返回对象类型。

答案 1 :(得分:0)

像这样创建BaseRepository。

  public class BaseRepository 
  {
     public static string ConnectionString { get; set; }

     static BaseRepository ()
     {
            ConnectionString = ConfigurationManager.AppSettings["dbConn"];
     }
  }

您的存储库类应该是这样的。

public class YourRepostiory : BaseRepository 
{
    public void YourMethod()
    {
        var connectionString = base.ConnectionString;

        using (var conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (var command = conn.CreateCommand())
            {
                command.CommandType = CommandType.Text;
                command.CommandText = sqlstring;
                loadContextId = (int)command.ExecuteScalar();
            }
        }
    }
}

希望这会对你有所帮助!!