Пользовательское встраивание переменной источника данных в строку подключения - PullRequest
0 голосов
/ 14 февраля 2019

как пользовательским способом вызвать источник данных строки подключения, существующая строка подключения сохраняется в файле web.config.Я использую Oledb для подключения к листу Excel, загруженному на сервер.

У меня есть строки подключения в файле web.config.Ранее я жестко программировал всю строку, включая расположение источника данных в файле web.config.

//this one works
<add name="testexcel1" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\usethis\WebApplication1\Uploaded Files\weekly output target.xlsx;Extended Properties='Excel 12.0 Xml;HDR=No;IMEX=1;MAXSCANROWS=0'"/>

//I would like to specify the data source parameter in my code behind file.
   <add name="testexcel" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=No'"/>

//this is what I am trying to do, but it just does not work, the string gets concatenated wrongly.
string fileLocation = Server.MapPath("~/Uploaded Files/" + filename);
builder.Provider = ConfigurationManager.ConnectionStrings["testexcel1"].ConnectionString;
        builder.DataSource = accept_filelocation;

//This is finally working
string connectionStringProvider =
ConfigurationManager.ConnectionStrings["testexcel1"].ConnectionString;

        string dataSource = accept_filelocation;

        string connectionString = String.Format(connectionStringProvider, dataSource);



        OleDbConnection oledbConn = new OleDbConnection(connectionString);

1 Ответ

0 голосов
/ 14 февраля 2019

Если я вас правильно понял, вы хотите прочитать формат строки подключения (включая {0}) из конфигурации и применить его к указанному источнику данных:

string connectionStringFormat = 
    ConfigurationManager.ConnectionStrings["testexcel1"].ConnectionString;

string dataSource = Server.MapPath("~/Uploaded Files/" + filename);

string connectionString = String.Format(connectionStringFormat, dataSource);
var builder = new OleDbConnectionStringBuilder(connectionString);
...