当前位置: 代码迷 >> ASP.NET >> 施用用户登录IP比较数据库中该用户IP时出错~大神速来~
  详细解决方案

施用用户登录IP比较数据库中该用户IP时出错~大神速来~

热度:8297   发布时间:2013-02-25 00:00:00.0
使用用户登录IP比较数据库中该用户IP时出错~~大神速来~~~~~~~~~~~
说下具体想法

数据库已建好

表getuseip中 loginIP字段储存用户登录IP

具体思路是用户每次登录用getip()方法获取用户IP并与数据库中该用户以往登录IP比较 若不同与以往每一次登录IP则将用户名,IP写入getuseip表中

并在Role表中修改用户登录次数和用户IP变换次数(分别加1)
下面是代码,由于VS2010不报错所以我真心不知道哪里错了,大神来指教!

C# code
  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根本不报错,郁闷~!~~!!

------解决方案--------------------------------------------------------
错误这个概念范围很广,不是是错误,vs就一定要报错,你代码执行没问题当然不会报错了,如果是达不到你要的效果,那就是你代码写的有问题,下断点,调试
------解决方案--------------------------------------------------------
if (String.Compare(dr1[0].ToString(), result)==0) 
{
i = i + 1;

break;
}
这句不成立应该。i永远大于0所以不走if(i=0)
------解决方案--------------------------------------------------------
  相关解决方案