Передача имени базы данных в SQL-запрос в webmatrix / razor - PullRequest
1 голос
/ 09 ноября 2011

У меня есть форма, встроенная в веб-матрицу, которая будет обновлять данные в указанной пользователем базе данных.

Я бы хотел, чтобы пользователь вставил в форму свое имя БД и открыл Database.Open("SQLServerConnectionString"); на основе представления пользователей.

если это невозможно, есть ли способ просто включить указанное пользователем имя БД в SQL-запрос ниже в веб-матрице?Пример того, что у меня есть ниже:

 var db = Database.Open("SQLServerConnectionString");
 var selectQueryString = "SELECT donor_id,first_name,last_name FROM SUPPORT.dpo.dp WHERE donor_id=@0";

Я бы хотел, чтобы статическая база данных «SUPPORT» в предложении FROM динамически обновлялась на основе пользовательского ввода.Любая помощь будет отличной.

1 Ответ

5 голосов
/ 09 ноября 2011

Используете ли вы файлы .mdf или фактические строки подключения к базе данных?Если строки подключения, вы можете использовать метод OpenConnectionString и передать пользовательскую строку подключения вместо использования whats в web.config.

http://msdn.microsoft.com/en-us/library/gg569301(v=VS.99).aspx

Что-то подобное, вероятно, будет работать:

@{ 
    var databaseName = Request["databaseName"]; //load from request
    var connectionString = string.Format("Data Source=.\\SQLExpress;Initial Catalog={0};Integrated Security=True", databaseName);
    var providerName = "System.Data.SqlClient"; 
    var db = Database.OpenConnectionString(connectionString, providerName); 
    var selectQueryString = "SELECT * FROM Product ORDER BY Name"; 
} 

Вы можете просто удалить префикс SUPPORT. , так как он не нужен для оператора select.

...