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# 中的两列?

我的 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注入。尝试进行以下更改,这应该可以解决您的问题,并将使用更好的方法从 C# 执行查询,避免 Sql 注入。

替换这部分代码:

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 回答