string LoingName= textBox1.Text;
string Password=textBox2.Text;
SqlConnection conn = new SqlConnection("server=.;database=中移建设综合资料查询系统;uid=sa;pwd=123");
conn.Open();
string sql = "select * from Loing where LoingName='" + LoingName + "' and Password='" + Password + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
int a = cmd.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("登录成功");
}
else
{
MessageBox.Show("登录失败");
}
}
很简单,改下代码就行了:
string sql = "select count (1) from Loing where LoingName='" + LoingName + "' and Password='" + Password + "'";
object count = cmd.ExecuteScalar();
int a = Convert.ToInt32(count);
谢谢
ExecuteNonQuery方法在你执行insert、update和delete 语句的时候返回的是被影响的行数,执行其他类型的语句的时候都是返回-1,就是说在这里执行查询语句无论有没有查询到结果数据,都是返回的-1;你可以在判断a>0的地方打个断点看一下
可以看下 https://www.cnblogs.com/best/p/7714500.html 这个里面的基础教程,下面的代码你可以参考一下:
//查询
private void btnQuery_Click(object sender, EventArgs e)
{
//创建连接对象,并使用using释放(关闭),连接用完后会被自动关闭
using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=MyCar"))
{
//打开连接
conn.Open();
//将执行的sql
String sql = "select Id,Title,Speed,Info from Car";
//创建命令对象,指定要执行sql语句与连接对象conn
SqlCommand cmd = new SqlCommand(sql, conn);
//执行查询返回结果集
SqlDataReader sdr = cmd.ExecuteReader();
//下移游标,读取一行,如果没有数据了则返回false
while (sdr.Read())
{
Console.WriteLine("编号:" + sdr["Id"] + ",车名:" + sdr["Title"] + ",速度:" + sdr["Speed"]);
}
}
}
把登录名、密码、sql语句、查到的数据通过log打印出来比对一下数据,看一下数据和数据库的数据一样不一样