0

コンボボックスの値を SQL 列と比較するのに行き詰まっています。C#でVS 2010からやろうとしています。SQL Server 2008 を使用しています。

以下の私のSQLテーブルを見つけてください。

Rings  NR     Name  Dia
=======================
10     12     a     15  
10     24     b     18  
10     15     c     21  
10     9      d     24  
10     7      e     15  
10     19     f     18  
10     33     g     24  
10     36     h     13  

Rings列と列の値を比較しようとしてNRいます。

私のSQLクエリはこれです。

select * from tblData  where Dia=15 and (Rings<=NR)

このクエリを SQL で正常に実行し、目的の結果を得ることができましたが、C# でこれを達成するために立ち往生しています。C#で2つの列を比較するにはどうすればよいですか?

私のC#コードは次のとおりです。

 string connectionString = ConfigurationManager.ConnectionStrings["QuoteProjectConnectionString"].ConnectionString;
 using (SqlConnection connection = new SqlConnection(connectionString))
 using (SqlCommand command = connection.CreateCommand())
 {
     {
         try
         {
            int a = Convert.ToInt32(cmbbx.SelectedItem.Text);
            command.CommandText = "Update tblData set Rings= " + 
                                     cmbbxRings.SelectedItem.Text+" ";
            connection.Open();
            command.ExecuteNonQuery(); 
            command.CommandText = "(select * from tblData where Dia=" + 15 +
                                     " and NR="+(a)<="NR"")";
            command.ExecuteNonQuery(); 
         }
         catch (SqlException ex)
         {
         }

クエリのこの部分を C# で書くのに苦労しています。

 (NR="+(a)<="NR) 
4

2 に答える 2

2

まず第一に、SQL インジェクションを避けるためにパラメータを使用する必要があります。以下の変更を行ってみてください。これにより、問題が解決し、Sql インジェクションを回避して C# からクエリを実行するより良い方法が使用されます。

コードのこの部分を置き換えます。

command.CommandText = "(select * from tblData where Dia="+15+" and NR="+(a)<="NR"")";

このコードで:

command.CommandText = "select * from tblData where Dia=@Dia and NR<=@NR";
command.Parameters.Add(new SqlParameter("@Dia", 15));
command.Parameters.Add(new SqlParameter("@NR", a));
于 2013-03-27T16:38:41.553 に答える
0

当たり前のことを試す。
クエリが SQL で機能する場合、それを使用してみませんか?

command.CommandText = "select * from tblData  where Dia=15 and Rings<=NR";
于 2013-03-27T17:09:32.593 に答える