说下具体想法数据库已建好表getuseip中 loginIP字段储存用户登录IP具体思路是用户每次登录用getip()方法获取用户IP并与数据库中该用户以往登录IP比较  若不同与以往每一次登录IP则将用户名,IP写入getuseip表中并在Role表中修改用户登录次数和用户IP变换次数(分别加1)
下面是代码,由于VS2010不报错所以我真心不知道哪里错了,大神来指教!
  getip gi = new getip();
                    string result = gi.IPAddress();
                    SqlConnection conn = new SqlConnection();
                    conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["diagnoiseSystemConnectionString"].ConnectionString;
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter();
                    SqlCommand selectcmd = new SqlCommand();
                    selectcmd.Connection = conn;
                    selectcmd.CommandText = "select loginIP from getuseip where UserName='" + Login1.UserName.ToString() + "' ";
                    da.SelectCommand = selectcmd;
                    DataSet ds1 = new DataSet();
                    da.Fill(ds1, "ip");
                    int i = 0;
                    foreach(DataRow dr1 in ds1.Tables["ip"].Rows)
                    {
                        if (String.Compare(dr1[0].ToString(), result)==0) 
                        {
                            i = i + 1;
                          
                            break;
                        }                        
                    
                    }
                    if(i==0)
                    {
                        SqlCommand selectcmd1 = new SqlCommand();
                        selectcmd.Connection = conn;
                        selectcmd1.CommandText = "select * from getuseip";
                        SqlCommand insert = new SqlCommand();
                        insert.CommandText = "insert into getuseip values(@UserName,@loginIP)";
                        insert.Connection = conn;
                        da.SelectCommand = selectcmd1;
                        da.Fill(ds1, "getuseip");
                        insert.Parameters.Add("@UserName", SqlDbType.VarChar, 50, "UserName");
                        insert.Parameters.Add("@loginIP", SqlDbType.NChar, 10, "loginIP");
                        da.InsertCommand = insert;
                        DataRow dr2 = ds1.Tables["getuseip"].NewRow();
                        dr2[0] = Login1.UserName.ToString();
                        dr2[1] = result;
                        ds1.Tables["getuseip"].Rows.Add(dr2);
                        da.Update(ds1, "getuseip");
                        SqlCommand udata1 = new SqlCommand();
                        udata1.CommandText = "Update Role,ipchange set logincount=logincount+1,ipchange=ipchange+1 where UserName=@UserName";
                        udata1.Connection = conn;
                        SqlParameter param = new SqlParameter("@UserName", Login1.UserName);
                        udata1.Parameters.Add(param);
                        udata1.ExecuteNonQuery();
                        conn.Close();
                    }                    Login1.DestinationPageUrl = "~/Main.aspx";关于这段代码,我很奇怪啊,不管是使用断点还是啥的方法都调试不出错误。
一句话就是VS根本不报错,郁闷~!~~!!

解决方案 »

  1.   

    selectcmd.CommandText = "select loginIP from getuseip where UserName='" + Login1.UserName.ToString() + "' ";
    da.SelectCommand = selectcmd;
    这里没有执行查询的命令语句吧。
    DataSet ds1 = new DataSet();
      

  2.   

    上面回答错了
    SqlCommand selectcmd = new SqlCommand();
                        selectcmd.Connection = conn;
                        selectcmd.CommandText = "select loginIP from getuseip where UserName='" + Login1.UserName.ToString() + "' ";
                        da.SelectCommand = selectcmd;
    SqlDataAdapter da = new SqlDataAdapter(selectcmd);//没放进去selectcmd
                        DataSet ds1 = new DataSet();
                        da.Fill(ds1, "ip");
      

  3.   

    脑袋不清醒。靠又回答错了。。看看这几个判断对不对。
      selectcmd.CommandText = "select loginIP from getuseip where UserName='" + Login1.UserName.ToString() + "' ";
    da.SelectCommand = selectcmd;
    DataSet ds1 = new DataSet();
    da.Fill(ds1, "ip");//这里有这个数据表吗?这里应该是不是getuseip ?
      

  4.   

    求大神指教!!
    我真的下了断点调试过了~  在ds1的"ip"表里面是有数据的但是断点调试到if就出问题了 断点调试竟然没用 他直接执行下去(就是监视和变量页面根本就没出来)直接跳转到main页哎呀 我那个愁啊大神仔细看下我的if语句 是不是有问题啊   因为是两个IP做比较 而且使用string.compare比较我不知道用这种方法来比较IP会有什么问题  VS和断点都不管用啊  不然 我也不会发帖求救了~~~~~
      

  5.   

    "ip"这个表是有的 而且是第一张表  后面的getuseip是第二张表
    因为用了两个select语句 
      

  6.   

    if (String.Compare(dr1[0].ToString(), result)==0) 
                            {
                                i = i + 1;
                              
                                break;
                            }
    这句不成立应该。i永远大于0所以不走if(i=0)
      

  7.   


    我在 if(i==0)这个地方下断点  结果i=0  可是我数据库里面是有一个IP值等于result的 
    大神看下我if语句  求 指教
      

  8.   


    我在 if(i==0)这个地方下断点  结果i=0  可是我数据库里面是有一个IP值等于result的 
    大神看下我if语句  求 指教
      

  9.   

     我之前定义i=0 
    经过if语句 判断"ip"表中是否有与result相同的ip 有则i=i+1中止循环没有的话i不是应该还是0么?i永远大于0真心不懂啊  求详解
      

  10.   

    int i = 0;改成bool cunzai=false;
    if (dr1[0].ToString()==result) 
    {
     cunzai=true;                  
     break;
    }
    if(i==0)改成下面
    if(cunzai!=true)
    {
    执行错误
      

  11.   

    insert.Parameters.Add("@loginIP", SqlDbType.NChar, 10, "loginIP");IP怎么才10个字符的长度?
      

  12.   

    建议你写些通用的ExcuteNonQuery等等函数,直接传递SQL语句和SqlParameter就是啦,
      

  13.   

    哈哈 问题找到了  
    你想都想不到
    原来是dr1[0]这个字符串后面带了个空格晕死  result后面没有空格 晕死
    给分给分