cholloway
cholloway

Reputation: 82

Passing databasename to SQL query in webmatrix/razor

I have a form built in webmatrix that will be updating data within a user specified database.

I would like the user to insert their DB name into the form, and have the Database.Open("SQLServerConnectionString"); open based on the users submission.

if not possible, is there a way to simply include the user specified DB name within the SQL query below within webmatrix? Sample of what I have below:

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

I would like the static "SUPPORT" database in the FROM clause to be updated dynamically based on user input. Any help would be great.

Upvotes: 1

Views: 1350

Answers (1)

Paul Tyng
Paul Tyng

Reputation: 7584

Are you using .mdf files or actual database connection strings? If connection strings you can use the OpenConnectionString method and pass a custom connection string instead of using whats in the web.config.

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

Something like this would probably work:

@{ 
    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"; 
} 

You can just drop the SUPPORT. prefix as its not necessary for the select statement.

Upvotes: 4

Related Questions