【问题标题】:App.Config connection string formatApp.Config 连接字符串格式
【发布时间】:2018-01-06 22:28:40
【问题描述】:

在我的 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 连接看起来是正确的。

任何人都可以对此有所了解吗?

【问题讨论】:

  • 使用这个可以解决你的问题:&lt;add name="ConnectionStringName" connectionString="Data Source=.;Initial Catalog=RoomViewr;Integrated Security=true;" providerName="System.Data.SqlClient" /&gt;
  • 你在哪里给databaseConnectionString赋值?
  • 使用Initial Catalog 而不是Server
  • 删除:“ToString()”。它已经是一个字符串,您可能正在获取对象类型。
  • @combo_ci 我需要把它放在 App.Config 的另一部分吗?

标签: c# sql app-config


【解决方案1】:

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

【讨论】:

  • 没错,databaseConnectionString 是对象...请将断点放在databaseConnectionString 中。
  • 那么返回连接字符串的最佳方式是什么?我已经尝试了一段时间,我被难住了。使用 App.Config 对我来说是新事物。以及像我正在做的那样传递它
  • 您实际上已经在读取连接字符串作为其中的一部分: static DbRepository repo = new DbRepository(new DbRepositoryConfig { ConnectionString = ConfigurationManager.AppSettings["dbConn"] });
  • 但是你没有在任何地方再次使用repo,并且不清楚DbRepository和DbRepositoryConfig之间的连接是什么,或者你的目标类
【解决方案2】:

像这样创建你的 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();
            }
        }
    }
}

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 2013-02-01
    • 2023-04-04
    • 2013-03-04
    • 2023-04-04
    • 2016-02-10
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多