visual studio 2010 连接数据库问题 着急

memary1314 2012-07-03 03:39:46
public static Boolean OperateData(string strsql)
{
try
{
SqlConnection conn = DBCon();
conn.Open();
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
catch
{
return false;
}
}
//================登陆=========================================
public static bool CheckPerson(string sname, string sno)
{
string sql = "select count(*) from people where sname='" + sname + "' and sno='" + sno + "'";
OperateData(sql);
if (OperateData(sql))
{
return true;
}
else
{
return false;
}
//conn.Close();
}
这是一个baseclass.cs文件里面的代码
protected void Button2_Click(object sender, EventArgs e)
{
if (TextName.Text == "" || TextPwd.Text == "")
{
Response.Write("<script>alert('请出入用户名或密码!')</script>");
}
else
{
if (Baseclass.CheckPerson(TextName.Text.Trim(), TextPwd.Text.Trim()))
{
Session["sname"] = TextName.Text.Trim();
Response.Redirect("Default2.aspx");
}
else
{
Response.Write("<script>alert('用户名或密码错误!');location='Default.aspx'</script>");
}

}
}
这是页面.aspx.cs文件按钮事件
我现在不管用什么账户和密码都可以登录 数据库不管用了 怎么改啊 要用catch catch写的
...全文
422 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
饕餮123 2012-07-03
  • 打赏
  • 举报
回复
SqlConnection conn = DBCon();
conn.Open();
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.ExecuteNonQuery();
conn.Close();
return true;

这里你就没有判断执行是否正确啊
搞成这样吧:
SqlConnection conn = DBCon();
conn.Open();
SqlCommand cmd = new SqlCommand(strsql, conn);
if(Convert.Int32( cmd.ExecuteScalar())>0)
{
conn.Close();
return true;
}
else{
return false;
}
//高手莫喷
lj0514519 2012-07-03
  • 打赏
  • 举报
回复
你现在的这个写法 是 不管 查到、没查到数据、 只要是不报错 就会返回True 肯定是 不管你是用什么用户名和密码都是可以登录的!
sihuashanxq 2012-07-03
  • 打赏
  • 举报
回复
在查询的结果集中判断是否有数据
work_fei 2012-07-03
  • 打赏
  • 举报
回复
你这个try catch是用来捕捉查找语句有错误时的错误,不管找不找得到这个用户,只要这个sql执行是正确的都是在try里面执行的,所以返回的都是true,用dataset,dataReader判断是否有这个用户
ldandlg 2012-07-03
  • 打赏
  • 举报
回复
首先打开连接,把关闭语句写在finally里
memary1314 2012-07-03
  • 打赏
  • 举报
回复
那应该怎么在这代码的基础上改啊
龙火 2012-07-03
  • 打赏
  • 举报
回复
OperateData 这个方法逻辑有问题,不抛异常的话都返回TRUE,应该查到的结果>=1才返回TRUE
memary1314 2012-07-03
  • 打赏
  • 举报
回复
那怎么改啊 要用try catch的话 帮帮我吧
memary1314 2012-07-03
  • 打赏
  • 举报
回复
那应该怎么改啊 把 try catch 放在那里呢 帮帮我把 大虾们
memary1314 2012-07-03
  • 打赏
  • 举报
回复
有红线
错误 2 “System.Data.SqlClient.SqlCommand”不包含“ExecuteScale”的定义,并且找不到可接受类型为“System.Data.SqlClient.SqlCommand”的第一个参数的扩展方法“ExecuteScale”(是否缺少 using 指令或程序集引用?) d:\WebSite\App_Code\Baseclass.cs 42 17 d:\WebSite\
怎么改啊

woainilei 2012-07-03
  • 打赏
  • 举报
回复
try
{
SqlConnection conn = DBCon();
conn.Open();
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.ExecuteNonQuery();
conn.Close();
return true;
}这个逻辑错了,只要能连上数据库不关cmd.ExecuteNonQuery();反回的是什么你都return true了。try只是为了报错用的不是用来判断数据库是否有查到记录。
tudiy 2012-07-03
  • 打赏
  • 举报
回复

DBCon()这个方法是连接数据库的吧?
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.ExecuteNonQuery();
改成 cmd.ExecuteScale();试试
另外直接把用户名传给Session你觉得对吗?
这代码写的。。。。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧