将Textbox.Text与SQL条目进行比较 [英] compare Textbox.Text with an SQL entry

查看:53
本文介绍了将Textbox.Text与SQL条目进行比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨gys,



我的sql数据库用户中有一个表(列,id,名称,密码)



在我的网络表单中我有两个文本框,当我按下一个按钮时,我尝试将textbox1与用户名称和textbox2与密码进行比较,如果它是正确的我想重定向到ok.aspx



i写下面的代码,但总是收到错误的userpass我不知道哪里出错了?

我要改变的是为了做到这一点提前工作?

提前!



 SqlConnection conn =  new  SqlConnection(ConfigurationManager.ConnectionStrings [  ConnectionString]。ToString()); 

string 查询;
SqlCommand SqlCommand;
SqlDataReader阅读器;

SqlDataAdapter adapter = new SqlDataAdapter();
// 打开与d的连接
字符串 name1;
string password1;
// 读取价格
SqlCommand sqlCommand = new SqlCommand( 选择名称,密码FROM users,conn) ;
conn.Open();
使用(SqlDataReader read = sqlCommand.ExecuteReader())
{
while (read.Read())
{
name1 = read [ name ]的ToString(); // 当前价格
password1 =读取[ password]。ToString();
string var1 = Convert.ToString(name1);
string var2 = Convert.ToString(password1);
string va3 = Convert.ToString(username.Text);
string va4 = Convert.ToString(passwordtx.Text);
bool result = va3.Equals(var1);
bool result2 = va4.Equals(var2);
if (结果&& result2)
{
Response.Redirect( ok.aspx);
}
else
Response.Write( wrongpass);
}

read.Close();
conn.Close();
}

解决方案

您好

i修改了您的代码...



看看这个,它可能对你有所帮助..





  public   void  check()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings [ ConnectionString]的ToString());
SqlCommand SqlCommand;

string userName = username.Text.Trim();
string password = passwordtx.Text.Trim();
string query = string .Format( 选择名称,密码FROM users其中name ='{0}'和password ='{1}',用户名,密码);

DataTable dt = new DataTable();
SqlCommand sqlCommand = new SqlCommand(query,conn);
SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand);
conn.Open();
adapter.Fill(dt);
conn.Close();


如果(dt!= null && dt.Rows.Count > 0
Response.Redirect( ok.aspx);
else
Response.Write( wrongpass);


}


试试这个,

 使用(SqlDataReader read = sqlCommand.ExecuteReader())
{
string va3 = Convert.ToString(username.Text);
string va4 = Convert.ToString(passwordtx.Text);
DataTable dt = new DataTable();
dt.Load(阅读);
DataRow [] result = dt.Select( name = + va3 + AND password = + va4);
if (result.Count()> 0
{
Response.Redirect( ok.aspx< /跨度>);
}
else
{
Response.Write( wrongpass);
}
read.Close();
conn.Close();
}



希望它可以帮到你。

谢谢。


  bool  result = va3.Equals(var1); 
bool result2 = va4.Equals(var2);
if (结果&& result2)
{
Response.Redirect( ok.aspx);
}
else
Response.Write( wrongpass);



尝试了解你在这里做了什么

你正在使用

 while(read.Read())



它将检查每个记录的条件。

但是在First Case上它会将你的if / else条件重定向到记录列表之外。



这就是为什么你的条件是会失败....

相当明智的Kartik解决方案很好检查你的查询时间条件。



否则我们会修改你的代码可能是这样的



  bool  IsMatch = < span class =code-keyword> false ; 
while (read.Read())
{
name1 = read [ name]。ToString(); // 当前价格
password1 =读取[ password]。ToString();
string var1 = Convert.ToString(name1);
string var2 = Convert.ToString(password1);
string va3 = Convert.ToString(username.Text);
string va4 = Convert.ToString(passwordtx.Text);
bool result = va3.Equals(var1);
bool result2 = va4.Equals(var2);
if (结果&& result2)
{IsMatch = true ; break ;}
}
read.Close();
conn.Close();
// 保持在while循环之外
if (IsMatch)
{
Response.Redirect( ok.aspx);
}
else
Response.Write( wrongpass);


Hi gys,

I have a table in my sql database user with columns (id,name,password)

in my web form i have two textboxes where when i press a button i try to compare the textbox1 with name from user and textbox2 with password if it is correct i want to redirect to ok.aspx

i write the following code but always i receive wrong userpass i don't know where is the wrong??
what i should change in order to make it work?
thn in advance!

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());

        string query;
        SqlCommand SqlCommand;
        SqlDataReader reader;

        SqlDataAdapter adapter = new SqlDataAdapter();
        //Open the connection to d
        string name1;
        string password1;
        //read value price
        SqlCommand sqlCommand = new SqlCommand("select name,password FROM users", conn);
        conn.Open();
        using (SqlDataReader read = sqlCommand.ExecuteReader())
        {
            while (read.Read())
            {
                 name1 = read["name"].ToString(); //current price
                password1 = read["password"].ToString();
                string var1 = Convert.ToString(name1);
                string var2 = Convert.ToString(password1);
                string va3 = Convert.ToString(username.Text);
                string va4 = Convert.ToString(passwordtx.Text);
                bool result = va3.Equals(var1);
                bool result2 = va4.Equals(var2);
                if (result && result2)
                {
                    Response.Redirect("ok.aspx");
                }
                else
                    Response.Write("wrongpass");
            }
     
            read.Close();
            conn.Close();
        }

解决方案

Hi
i have modified your code...

have a look on this, It might help you..


public void check ()
       {
           SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
                       SqlCommand SqlCommand;

           string userName = username.Text.Trim();
           string password = passwordtx.Text.Trim();
           string query = string.Format("select name,password FROM users where name ='{0}' and password ='{1}'" , username, password);

           DataTable dt = new DataTable();
           SqlCommand sqlCommand = new SqlCommand(query , conn);
           SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand);
           conn.Open();
           adapter.Fill(dt);
          conn.Close();


           if (dt != null && dt.Rows.Count > 0)
               Response.Redirect("ok.aspx");
           else
               Response.Write("wrongpass");


           }


Try this also,

using (SqlDataReader read = sqlCommand.ExecuteReader())
{
    string va3 = Convert.ToString(username.Text);
    string va4 = Convert.ToString(passwordtx.Text);
    DataTable dt = new DataTable();
    dt.Load(read);
    DataRow[] result = dt.Select("name = " + va3 + " AND password = " + va4);
    if(result.Count() > 0)
    {
        Response.Redirect("ok.aspx");
    } 
    else
    {
        Response.Write("wrongpass");
    }
    read.Close();
    conn.Close();
}


Hope it helps you.
Thanks.


bool result = va3.Equals(var1);
             bool result2 = va4.Equals(var2);
             if (result && result2)
             {
                 Response.Redirect("ok.aspx");
             }
             else
                 Response.Write("wrongpass");


Try to understand what you have done here
You are using

while (read.Read())


it will check your condition with each of records.
But on First Case it will Redirect a page with your if/else condition out of List of Records.

That's why your condition is going to fail....
Rather wise Kartik Solution is good to check your condition on query time.

Else If We will modify your code it will may be like this

bool IsMatch=false;
while (read.Read())
            {
                 name1 = read["name"].ToString(); //current price
                password1 = read["password"].ToString();
                string var1 = Convert.ToString(name1);
                string var2 = Convert.ToString(password1);
                string va3 = Convert.ToString(username.Text);
                string va4 = Convert.ToString(passwordtx.Text);
                bool result = va3.Equals(var1);
                bool result2 = va4.Equals(var2);
              if (result && result2)
{IsMatch=true;break;}
            }
            read.Close();
            conn.Close();
//Keeping outside of your while loop
if (IsMatch)
                {
                    Response.Redirect("ok.aspx");
                }
                else
                    Response.Write("wrongpass");


这篇关于将Textbox.Text与SQL条目进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆