为什么按照下面的代码连接数据库每次登录均为登陆失败??求大神
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace PWMS
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void butlogin_Click(object sender, EventArgs e)
{
string ConnectionString = "server=.;uid=Name;pwd=Pass;database=db_pwms;";
DataTable dt = new DataTable();
SqlConnection myConnection = new SqlConnection(ConnectionString);
try
{
myConnection = new SqlConnection(ConnectionString);
myConnection.Open();
//根据输入的用户名和密码 到数据库查询 是否有符合账号和密码的记录
string SQLString = "SELECT * FROM Table where Name=textname.Text AND Pass= textPass.Text";
SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(SQLString, myConnection);
dt = new DataTable();
objSqlDataAdapter.Fill(dt);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
finally
{
if (myConnection.State == ConnectionState.Open)
{
myConnection.Close();
}
}
if(dt.Rows.Count >1)
{
MessageBox.Show("登陆成功");
}
else
{
MessageBox.Show("登陆失败");
}
}
}
}
--------------------编程问答-------------------- 我也是菜鸟 不太懂 是不是 缺少这个
dataset ds =new dataset(); --------------------编程问答-------------------- //根据输入的用户名和密码 到数据库查询 是否有符合账号和密码的记录
string SQLString = "SELECT * FROM Table where Name='"+textname.Text+"' AND Pass= '"+textPass.Text+"'";
不过这样有sql注入漏洞,
你可以查找下sql参数化提交 --------------------编程问答-------------------- dt.Rows.Count>1
应该大于0吧 --------------------编程问答-------------------- 2L正解 textname.Text和textPass.Text是当做变量来用的 不能包含在双引号里面使用 --------------------编程问答-------------------- 调试看看拼装的SQL语句有无问题就OK啦 --------------------编程问答--------------------
应该是>=0,也就是说>1是可以的。 --------------------编程问答-------------------- SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(SQLString, myConnection);
这句是什么意思啊,不是SqlCommand objSqlDataAdapter = new SqlCommand(SQLString ,conn1); --------------------编程问答-------------------- 首先你的sql语句拼接错误
string SQLString = "SELECT * FROM Table where Name=textname.Text AND Pass= textPass.Text";
改为
string SQLString = "SELECT * FROM Table where Name='"+textname.Text+"' AND Pass= '"+textPass.Text+"'";
其次,前面已经DataTable dt = new DataTable();
后面还new datatable
最后,判断问题
if(dt.Rows.Count >1)
{
MessageBox.Show("登陆成功");
}
什么意思?大于1就登陆成功,意思说等于1就不行了么? --------------------编程问答-------------------- 应该是大于零,根据账号和密码只能得到一条数据,直接if(dt.rows.count==1)也行
补充:.NET技术 , C#