2017-04-07 30 views
0

私はこれがコードビハインドで可能であることを知っていますが、そこでselectコマンドを変更してバインドすると、リフレッシュと並べ替えでグリッドビューの問題が発生するため、これは私が探している答えではありません。ASPX SqlDataSource SelectCommandで文字列変数を使用することは可能ですか?

私はすでにSQLパラメータにパラメータ化された文を組み込んでいますが、パラメータ化された文としては機能しないと思われる部分を変更するには、他の部分が必要です。

例:

<asp:SqlDataSource ID="SQLSolutionSource" runat="server" 
SelectCommand="SELECT id, my_cat1, my_cat2, my_cat3, my_cat4, my_cat5, my_cat6 FROM [my_db].[dbo].[my_table]" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" /> 

コマンドの "SELECT ID、my_cat1、my_cat2、my_cat3、my_cat4、my_cat5、my_cat6" の部分を使用ELSE IF文私は約10を持っています。

コードビハインドの場合は、上記の文字列で変数を作成し、selectコマンドを "+ my_string +" FROM [my_db]。[dbo]。[my_table] "に変更することができます。

ASPXページでこれを行う方法はありますか?私はパブリック文字列を作成し、SelectCommand = "<%= my_string%> FROM [my_db]。[dbo]。[my_table]を使用してみましたが、全く動作していないようです。

私は人々がセキュリティの影響とSQLインジェクションについて疑問に思うかもしれないが、この変数はハードコードされており、ユーザーが変更できないことを理解しています。私は単にコマンドを単純化してコードを整理したいので、選択した項目を変更する必要がある場合は、10の異なる場所ではなく、1つの変数で行うだけです。

+0

あなたはSqlDataSourceから完全に離れることができます。[my answer](http://stackoverflow.com/questions/43279371/updatecommand-parameter-value-always-a-string/43280341#43280341)を参照してください。この他の質問。 – mason

+0

ありがとうございますが、私は代替データの実装を探していません。私の質問に対する答えです。 –

+0

なぜですか? SqlDataSourceはひどいです。 – mason

答えて

0

最終的に、EXECUTE sp_executesqlを使用して、非常にうまく動作するselectコマンドとして動的SQLクエリを構築できました。

EDIT:以下のサンプルを追加しました。

サンプルコード(私の生産コードは完全に異なっているように、微調整をテストされていない必要がある場合があります)

<asp:SqlDataSource ID="SQLSolutionSource" runat="server" 
     SelectCommand=" 
     declare @perm_source varchar(30) 
     set @perm_source = @perm_type 

     declare @select_query Nvarchar(400)  
     SET @select_query = 'SELECT id, my_cat1, my_cat2, my_cat3, my_cat4, my_cat5, my_cat6 FROM ' + @perm_source 
     EXECUTE sp_executesql @select_query 

     " 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" /> 

現在、いくつかは、+ 'FROM @perm_sourceは、インジェクション攻撃を受けやすいですが、私の場合はそれと主張することがあり変数(@perm_type)はパラメータ化され、コードビハインドの静的な値のみに基づいているため、そうではありません。

+0

質問を解決したコードをこの回答に追加すると、同じ問題を抱えている他の人に役立ちます。 – milo526

関連する問題