我现在要向一个表录入数据,表中有一字段num是不可以重复的,我用了一个for循环已经解决,可是表中有另一字段name它的只有两种录入值(A或B),现在我要通过name这个字段来判断num是否重复,也就是录入A时,A的num不重复;录入B时,B的num不重复,我想应该是通过A或B过滤一下吧,可是不知道怎么做,请各位高手帮忙,下边是我的for循环,该如何改啊?谢谢
int i;
sqlDataAdapter1.SelectCommand = new System.Data.SqlClient.SqlCommand ();
sqlDataAdapter1.SelectCommand.Connection = SqlConnection1;
sqlDataAdapter1.SelectCommand.CommandText = "SELECT num FROM 表名";
sqlDataAdapter1.Fill(dataset11, "表名");
for (i = 0; i < dataset11.表名.Rows.Count; i++)
{
  if (num_txt.Text.CompareTo(dataset11.表名.Rows[i].ItemArray.GetValue(0))==0)
{
  num_txt.Text="原则代码重复";

  return;
}

}

解决方案 »

  1.   

    A的Num在哪里?b的Num又在哪里?是同一张表还是不同表?
      

  2.   

    如果需要这样判断的话应该是数据库没有设计好吧,
    不重复的东西可以使用Unique约束啊,至于A 、B这样的我想可以使用一位的数据才存贮要么是0要么是1
      

  3.   

    再说如果num唯一且必须的话你干脆把它设成primary key好了,让数据库自己管自己的事,程序应该尽量不要管这些
      

  4.   

    是同一张表的,A的num和B的num都在num这个字段里录
    数据库现在只能是这样,因为数据不是我做的
      

  5.   

    ivorstar(单击此处留言) :num就是primary key啊
      

  6.   

    ' 简单抄一下
       int i;
       sqlDataAdapter1.SelectCommand = new System.Data.SqlClient.SqlCommand ();
       sqlDataAdapter1.SelectCommand.Connection = SqlConnection1;
      '这一句改一下
       sqlDataAdapter1.SelectCommand.CommandText = "SELECT num FROM 表名 and name='" & name.text & "'";
       sqlDataAdapter1.Fill(dataset11, "表名");
       for (i = 0; i < dataset11.表名.Rows.Count; i++)
       {
      if (num_txt.Text.CompareTo(dataset11.表名.Rows[i].ItemArray.GetValue(0))==0)
    {
      num_txt.Text="原则代码重复";

      return;
    }

    }
      

  7.   

    明白你要干嘛了
    你要这样查的话是不是name是A或B时,能有相同的num啊?
    可是如果只是一个num作主键的话,在一张表里肯定不行啊,会出错的。如果是num和name联合作主键的话,就像上面的做法
       sqlDataAdapter1.SelectCommand.CommandText = "SELECT num FROM 表名 WHERE name= 'A'";
       sqlDataAdapter1.Fill(dataset11, "表名A");
       sqlDataAdapter1.SelectCommand.CommandText = "SELECT num FROM 表名 WHERE name= 'B'";
       sqlDataAdapter1.Fill(dataset11, "表名B");
       for (i = 0; i < dataset11.表名.Rows.Count; i++)
       {
      if (name.Text == "A" && num_txt.Text.CompareTo(dataset11.表名A.Rows[i].ItemArray.GetValue(0))==0)
    {
      num_txt.Text="原则代码重复";

      return;
    }
        else if (name.Text == "B" && num_txt.Text.CompareTo(dataset11.表名B.Rows[i].ItemArray.GetValue(0))==0)
             {
                 num_txt.Text="XXXX";
                 return;
             }
        else
             {
                 num_txt.Text="XXXX";
                 return;
             }

    }
    是不是这样啊?
      

  8.   

    不明白你要干吗,既然a跟num的关系为什么要循环呢 直接sql语句判断不就行了?奇怪~
      

  9.   

    联合主键,或者能不能放到两张表里如果num你要用到,最好另选一个字段做为主键吧
      

  10.   

    各位ggjj们,我自己糊里糊涂的已经解决了,只是在原代码的基础上加了一句话,仍然要谢谢你们,现在给你们加分,虽然不多,呵