2011-11-08 9 views
1

私は、ユーザー指定のデータベース内のデータを更新するwebmatrixに組み込まれたフォームを持っています。webmatrix/razorでSQLクエリーにdatabasenameを渡す

ユーザーにフォームにDB名を入力し、ユーザー提出に基づいて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 [email protected]"; 

私は、ユーザー入力に基づいて動的に更新するFROM句には、静的な「SUPPORT」のデータベースをしたいと思います。どんな助けも素晴らしいだろう。

答えて

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

あなただけサポートをドロップすることができます。接頭辞selectステートメントでは不要です。

+0

は** String.Formatの**素晴らしい仕事 –

+0

おかげ@PaulTを、呼び出し参照、私の答えを更新しました。私は@ 0が必要だと思ったが、{0}は私が必要だったものだ。違いはまだ私には少し霧があります。 – cholloway

+1

@ 0はSQLクエリのパラメータ値のプレースホルダです。 {0}は、string.Formatメソッド呼び出しの動的値の(ほとんどの)プレースホルダです。 –

関連する問題