当前位置:编程学习 > C#/ASP.NET >>

为什么按照下面的代码连接数据库每次登录均为登陆失败??求大神

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啦 --------------------编程问答--------------------
引用 3 楼  的回复:
dt.Rows.Count>1
应该大于0吧

应该是>=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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,