public SqlConnection Connection() //连接并返回连接对象
{
SqlConnection conn = new SqlConnection(" Data Source=localhost;Initial Catalog=db_NetBar;User ID=sa;Password=123456");
return conn;
}
public SqlCommand Command(string sql, SqlConnection conn) //返回一个SqlCommand对象
{
SqlCommand cmd = new SqlCommand(sql,conn);
return cmd;
}
public bool HasUser(string sql) //判断输入的用户信息是否存在
{
SqlConnection conn = this.Connection();
conn.Open();
SqlCommand cmd;
cmd = this.Command(sql, conn);
if (cmd.ExecuteNonQuery() > 0)
{
return true;
}
else
{
MessageBox.Show("输入的用户名或密码不正确,请从新输入!");
return false;
}
conn.Close();
}
private void btn_Denglu_Click(object sender, EventArgs e)
{
if ((txtb_UserID.Text == "") || (txtb_UserPwd.Text == ""))
{
MessageBox.Show("用户ID和用户密码不能为空");
}
else
{
string ID = txtb_UserID.Text.ToString();
string Pwd = txtb_UserPwd.Text.ToString();
if (cbo_select.Text == "超级管理员")
{
string sql = "select * from Super_Administor where Sup_Adm_ID="+ID +" and Sup_Adm_Pwd="+Pwd;
if (this.HasUser(sql))
{
Sup_AdmLogin newFrm1 = new Sup_AdmLogin();
newFrm1.Show();
}
}
if (cbo_select.Text == "管理员")
{
string sql = "select * from Administor where Adm_ID="+ID+" and Adm_Pwd="+Pwd;
if (this.HasUser(sql))
{
AdministorLogin newFrm2 = new AdministorLogin();
newFrm2.Show();
}
}
if ((cbo_select.Text == "普通用户") || (cbo_select.Text == "会员用户") || (cbo_select.Text == "VIP用户"))
{
string sql = "Select * from Users where Users_ID='@Users_ID' and Users_Pwd='@Users_Pwd'";
if (this.HasUser(sql))
{
UserLogin newFrm3 = new UserLogin();
newFrm3.Show();
}
}
}
}
private void btn_Exit_Click(object sender, EventArgs e)
{
this.Close();
}
我是freshman
上面的代码有问题,访问不了数据表中的数据,就高手指导!
把 sql输出来检查一下
打个断点。把执行的SQL,在查询分析器中执行下试试
你应该查数量啊
select count(0) from table
应该使用ExecuteScalar
是的,select查询用ExecuteNonQuery 检测不到什么,很多时候返回-1,要不就是:
1. select 出来,判断ds.rows.count
2.或者是直接在select 语句里 用select count(*) from Super_Administor where Sup_Adm_ID="+ID +" and Sup_Adm_Pwd="+Pwd
3.或者 是直接取出当前ID的名字到本地,然后与用户类型做匹配,用ExecuteRead()
加断点,单步调试,是个不错的方法
你的SQL语句是 select,为何却使用 cmd.ExecuteNonQuery() 非查询操作?
哈哈,这个只能再查询一遍了。
cmd.ExecuteNonQuery() 返回的是受影响的行数 他是执行 insert delete update 时候用的
你现在是Select 而且你是判断登录状态 固然要用cmd.ExecuteScalar 他是返回首行首列的值