2012-03-28 5 views
0

私のテーブル:UIでsqlserver 2008では、一度に複数の列の値を確認する方法は?

id address tag 
1 test class1 
2 test1 class2 
3 test3 class3 

私は、チェックボックスのように、すべてのタグ名を表示しています。 ユーザが1つ以上のタグ名を選択すると、必要なアドレス値を取得する必要があります。取得する方法? ユーザーがUIでclass1、class2を選択した場合、test1を結果として取得する必要があります。 そのためにsqlserver 2008にクエリを書き込む方法を教えてください。

編集コード:

taglist = "class1,class2"; 
       SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString); 
       SqlCommand cmd = new SqlCommand("usp_GetTags", con); 
       cmd.Parameters.Add("@Tags", SqlDbType.VarChar).Value = taglist; 

       con.Open(); 

       cmd.CommandType = CommandType.StoredProcedure; 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataSet ds = new DataSet(); 
       da.Fill(ds); 

パラメータを渡しながら、私は、単一のタグリストを渡す任意のresults.ifを得ていない、上記のように= class1にresults.butタグリスト=「クラス1、クラス2」は、任意のresuls.pleaseが言う得ていないばかりUIから複数のパラメータを渡す方法。

答えて

1

クエリは、INキーワードを使用してSQL Serverに書き込むことができます。

Select address from mytable where tag IN ('class1','class2') 

EDIT:

は、このようなストアドプロシージャに値でパラメータを追加します。 その単一の文字列のすべての値を置くことは非常に簡単で、それに応じてクエリは、そのスーツ:以下のコードを

  comand.Parameters.AddWithValue("@Parameter1", "class1"); 
      comand.Parameters.AddWithValue("@Parameter2", "class2"); 

はEDIT 2は、C#.NETで書かれています。 最終的に私はあなたの問題の解決策を見つけた:

  string SingleParameter = ""; 
      SingleParameter = "class1,class2,class3"; 
      comand.Parameters.AddWithValue("@SingleParameter",SingleParameter); 

EDIT 3に従うよう

  Select address from mytable where tag IN (@SingleParameter) 

とあなたのコーディング部分の書き込みのように、あなたのストアドプロシージャでクエリを書きます。

ALTER PROCEDURE dbo.TestSP 
    /* 
    (
    @parameter1 int = 5, 
    @parameter2 datatype OUTPUT 
    ) 
    */ 
    @SingleParameter varchar(30) 
AS 
    /* SET NOCOUNT ON */ 
    declare @tags varchar(500) 
    set @tags = @SingleParameter 
    create table #t (tag varchar(10)) 
    set @tags = 'insert #t select ' + replace(@tags, ',', ' union select ') 
    exec(@tags) 
     Select address from sample1 where (tag in (select tag from #t)) 
    drop table #t 
    RETURN 

の下にあなたのストアドプロシージャを記述しても

  string SingleParameter = ""; 
      SingleParameter = "'class1','class2','class3'"; 
      comand.Parameters.AddWithValue("@SingleParameter",SingleParameter); 
+0

次のようSingleParameterパラメータを送信私は試してみましたが、無効な列名のクラス1、クラス2としてエラーを取得します。 – user1237131

+0

@ user1237131、class1とclass2は右の列ではなく、タグ列の値です。 –

+0

Sこれはタグcolumn.iの列の値です。上記の構文を試していますが、「無効な列名 'class1'」というエラーがあります。 – user1237131

関連する問題