C#和MySql更改列var

时间:2016-06-19 15:24:04

标签: c# mysql

我在c#中创建了mysql注册/登录系统。我可以注册并使用它登录。 我通过以下方式验证帐户:

MySqlConnection conn = new MySqlConnection(db_creds);
            try { conn.Open(); }
            catch { throw new Exception("Can't access database"); }
            MySqlDataAdapter adapter;
            DataTable table = new DataTable();
            string query = "SELECT `Nickname`, `Password` FROM `" + db_table + "` WHERE `Nickname` = '" + nickname + "' AND `Password` = '" + password + "'";
            adapter = new MySqlDataAdapter(query, conn);
            adapter.Fill(table);
            conn.Close();
            if(table.Rows.Count <= 0)
            {
                return false;
            }
            else { return true; }

在昵称和密码之后我将varchar命名为active。我的问题是: 我怎样才能改变&#34;活跃&#34; (仅限此用户)当用户成功登录时为1?当注销将其更改为0?

2 个答案:

答案 0 :(得分:0)

要更改表中的单个行,您需要获取它的ID(此表的唯一标识符)。让此唯一列的名称为str_Id,然后为特定用户名和密码检索此ID。然后,您可以根据此唯一标识符更新活动状态。

另一个重要的建议是,不要使用这种类型的纯文本查询,这将为SQL注入打开一扇大门。所以我强烈建议您使用参数化查询,如下所示;

string query = "SELECT Nickname,str_Id  FROM your_table_name" +
               " WHERE Nickname =@nickname  AND Password = @password";
MySqlConnection con = new MySqlConnection();

// Creating parameterized command

MySqlCommand cmd = new MySqlCommand(query, con);
cmd.Parameters.Add("@nickname", MySqlDbType.VarChar).Value = nickname;
cmd.Parameters.Add("@password", MySqlDbType.VarChar).Value = password;
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataTable table = new DataTable();

// Collect the details to a DataTable

adapter.Fill(table);
if (table.Rows.Count>0) // Means there is some record found
{
    // Get theUnique ID for the matching record
    string uniqueId = table.Rows[0]["str_Id"].ToString();

    // Update active state for that particular user
    query = "Update your_table_name set active='0' Where str_Id=@str_Id";
    cmd = new MySqlCommand(query, con);
    cmd.Parameters.Add("@str_Id", MySqlDbType.VarChar).Value = uniqueId;
    // Execute command here
}
else
{
    // Print message thet no user found
}

答案 1 :(得分:0)

当您验证用户是否存在以及密码是否正确并在那里返回消息时,您需要为数据库添加更新命令。

使用该更新命令,您需要将列ACTIVE更新为1但更新为该用户,因此您需要使用此命令:

UPDATE table_name
SET column1=value1
WHERE some_column=some_value;

所以在你的情况下

UPDATE db_table SET active = 1 WHERE nickname = ' + nickname + '

因此用户现在具有ACTIVE状态。

现在你需要在注销时将其设置为非活动状态,这样当你按下注销按钮或关闭程序时就会这样做,但原则相同

UPDATE db_table SET active = 0 WHERE nickname = ' + nickname + '