检查我的数据库中是否存在用户



我有一个c#登录论坛,它有两个文本框

1.用户名

2.密码

我正在尝试检查该用户是否存在于我的Oracle数据库中。如果是这样的话,我想让它做点什么(比如打电话给另一个论坛,等等),但我收到了一条错误消息,说我缺少一个表达式。它怎么了?

private void button1_Click(object sender, EventArgs e)
{
    isUserExist(textBox1.Text,textBox2.Text);
}
public bool isUserExist(string username,string password)
{
    try
    {
        string connstring = "data source=test_db;user id=system;password=password;";
        string statementcmd = "SELECT * FROM register_user Where UserName=@username";
        OracleConnection conn = new OracleConnection(connstring);
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandText = statementcmd;
        cmd.Parameters.Add("@username", username);
        if (conn.State != ConnectionState.Open)
        {
            conn.Open();
            OracleDataReader reader = cmd.ExecuteReader();
            if (!reader.HasRows)
            { MessageBox.Show("User Name Not Found"); }
            if (!password.Equals(reader["password"].ToString()))
                 MessageBox.Show("Incorrect Password");
            reader.Close();
            }
            return true;
        }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
        return false;
    }
}

在尝试访问属性之前,需要调用DataReader上的Read方法。

if (reader.Read())
{
    // Do stuff
}

祝你好运!

1。在将命令字符串分配给CommandText之前,需要先分配parameters
2.在访问records之前,需要调用Read() OracleDataReader对象reader
3。只有当找到用户时,才应在true时返回true。(在第二个条件中,如果缺少大括号)
4.您可以对程序中的所有IDisposable实现类使用using{}块,以便它们的对象disposal得到照顾。(因此您不需要在ConnectionCommand对象上调用Close()

完整解决方案:

public bool isUserExist(string username,string password)
{
    bool status=false;
    try
    {
        string connstring = "data source=test_db;user id=system;password=password;";
        string statementcmd = "SELECT * FROM register_user Where [UserName]=@username";
        using(OracleConnection conn = new OracleConnection(connstring))
       {
        using(OracleCommand cmd = new OracleCommand())
       {
        cmd.Connection = conn;
        cmd.Parameters.Add("@username", username);//add parameters before assigning it to CommandText
        cmd.CommandText = statementcmd;
        if (conn.State != ConnectionState.Open)
        {
            conn.Open();
           OracleDataReader reader = cmd.ExecuteReader();

            if (!reader.Read())
            { MessageBox.Show("User Name Not Found"); }
            if (!password.Equals(reader["password"].ToString())) 
            {
                 status=true;
                 MessageBox.Show("Incorrect Password");
            }

        }
      }
     }
   }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
        status=false;
    }
return status;
}

最新更新