将databasename传递给webmatrix/razor中的SQL查询

cho*_*way 1 asp.net webmatrix razor

我有一个内置在webmatrix中的表单,它将更新用户指定数据库中的数据.

我希望用户将他们的数据库名称插入表单,并Database.Open("SQLServerConnectionString");根据用户提交打开.

如果不可能,有没有办法在webmatrix下面的SQL查询中简单地包含用户指定的DB名称?我在下面的示例:

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

我希望根据用户输入动态更新FROM子句中的静态"SUPPORT"数据库.任何帮助都会很棒.

Pau*_*yng 5

您使用的是.mdf文件还是实际的数据库连接字符串?如果是连接字符串,则可以使用该OpenConnectionString方法并传递自定义连接字符串,而不是使用web.config中的whats.

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"; 
} 
Run Code Online (Sandbox Code Playgroud)

你可以放弃支持.前缀对于select语句不是必需的.