说下具体想法数据库已建好表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根本不报错,郁闷~!~~!!
下面是代码,由于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根本不报错,郁闷~!~~!!
解决方案 »
- EXCL导出问题
- 按钮事件内就写了一个关闭窗口事件WINDOW.CLOSE()。但是就不关闭,脚本也不报错
- asp.net中的ListView如何制作下面的样式
- 我现在有个进销存(bs结构的)想外包
- 难,,,如何获取js中的文本框的值了
- float a = Convert.ToInt32(reader[0]);和float a = reader.GetFloat(0);一个可以一个不行,缘何?
- 服务器sql2000数据库连接不上?
- NET的文件夹总是只读这么也去不了,所以在项目里也是只读,有办法吗?我用的是WINDOWXP
- 有关sql多个字段拼接查询的问题
- 大数据加载优化
- 艰难问题 考虑很久还不会大虾们来看看 帮个忙很着急
- XML解析
da.SelectCommand = selectcmd;
这里没有执行查询的命令语句吧。
DataSet ds1 = new DataSet();
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");
selectcmd.CommandText = "select loginIP from getuseip where UserName='" + Login1.UserName.ToString() + "' ";
da.SelectCommand = selectcmd;
DataSet ds1 = new DataSet();
da.Fill(ds1, "ip");//这里有这个数据表吗?这里应该是不是getuseip ?
我真的下了断点调试过了~ 在ds1的"ip"表里面是有数据的但是断点调试到if就出问题了 断点调试竟然没用 他直接执行下去(就是监视和变量页面根本就没出来)直接跳转到main页哎呀 我那个愁啊大神仔细看下我的if语句 是不是有问题啊 因为是两个IP做比较 而且使用string.compare比较我不知道用这种方法来比较IP会有什么问题 VS和断点都不管用啊 不然 我也不会发帖求救了~~~~~
因为用了两个select语句
{
i = i + 1;
break;
}
这句不成立应该。i永远大于0所以不走if(i=0)
我在 if(i==0)这个地方下断点 结果i=0 可是我数据库里面是有一个IP值等于result的
大神看下我if语句 求 指教
我在 if(i==0)这个地方下断点 结果i=0 可是我数据库里面是有一个IP值等于result的
大神看下我if语句 求 指教
经过if语句 判断"ip"表中是否有与result相同的ip 有则i=i+1中止循环没有的话i不是应该还是0么?i永远大于0真心不懂啊 求详解
if (dr1[0].ToString()==result)
{
cunzai=true;
break;
}
if(i==0)改成下面
if(cunzai!=true)
{
执行错误
}
你想都想不到
原来是dr1[0]这个字符串后面带了个空格晕死 result后面没有空格 晕死
给分给分