C# 用C语言更新数据库命令#

C# 用C语言更新数据库命令#,c#,mysql,.net,sql,database,C#,Mysql,.net,Sql,Database,我正在尝试将两个表B和1更新为当前登录用户(我的uid命令: using (MySqlCommand bb = new MySqlCommand("UPDATE members SET Begin = 1 WHERE id ='" + uid + "';")) { bb.Connection = con; con.Open(); using (MySqlCommand fff = new

我正在尝试将两个表B和1更新为当前登录用户(我的uid命令:

        using (MySqlCommand bb = new MySqlCommand("UPDATE  members SET  Begin = 1 WHERE id ='" + uid + "';"))
        {
            bb.Connection = con;
            con.Open();
            using (MySqlCommand fff = new MySqlCommand("UPDATE  members SET  b = 1 WHERE id ='" + uid + "';"))
            {
                fff.Connection = con;
            }
            this.Hide();
            Main main = new Main();
            main.Show();
        }

我不知道为什么,但它不会更新数据库。

您没有执行该命令

您需要
fff.ExecuteScalar();
bb.ExecuteScalar();

ExecuteNonQuery();

此外,您还容易受到SQL注入的影响,请尝试使用

例如:

  using (MySqlCommand id = new MySqlCommand("SELECT id FROM members WHERE username='" + textBox1.Text + "';"))
                            {
                                id.Connection = con;
                                MySqlDataReader read3 = cmd.ExecuteReader();
                                read3.Dispose();
                                int idd = (int)id.ExecuteScalar();
                                uid = idd;
                                Begin.uid = idd;
                                MySqlDataReader read4 = id.ExecuteReader();
                                read4.Dispose();
                                id.Dispose();
                            }

你没有执行命令

您需要
fff.ExecuteScalar();
bb.ExecuteScalar();

ExecuteNonQuery();

此外,您还容易受到SQL注入的影响,请尝试使用

例如:

  using (MySqlCommand id = new MySqlCommand("SELECT id FROM members WHERE username='" + textBox1.Text + "';"))
                            {
                                id.Connection = con;
                                MySqlDataReader read3 = cmd.ExecuteReader();
                                read3.Dispose();
                                int idd = (int)id.ExecuteScalar();
                                uid = idd;
                                Begin.uid = idd;
                                MySqlDataReader read4 = id.ExecuteReader();
                                read4.Dispose();
                                id.Dispose();
                            }

首先是用户参数化查询,其次是对任何
SqlCommands
调用
ExecuteNonQuery()

 bb.CommandText = "UPDATE members SET  Begin = 1 WHERE id = @id";  
 bb.Parameters.AddWithValue("@id", id);
 bb.ExecuteNonQuery();

首先是用户参数化查询,其次是对任何
SqlCommands
调用
ExecuteNonQuery()

 bb.CommandText = "UPDATE members SET  Begin = 1 WHERE id = @id";  
 bb.Parameters.AddWithValue("@id", id);
 bb.ExecuteNonQuery();

您从未执行过update命令。正如@GrantThomas所说,此命令易受“SQL注入”攻击。更妙的是,2013年太可怕了,停止使用direct SQL!!使用实体框架,所有这些问题都会消失…不仅如此,你还需要使用参数化更新。你永远不会执行更新命令。正如@GrantThomas所说的,这个命令容易受到“SQL注入”的攻击。更棒的是,2013年太可怕了,停止使用direct SQL!!使用实体框架,所有这些问题都会消失…不仅如此,你还需要使用参数化更新。谢谢!我如何使SQL inj不受攻击?:)idk什么是参数化查询。。xD@VlasiuRobert-更新答案以向您展示如何执行此操作。谢谢!如何使in对SQL inj不受攻击?:)idk什么是参数化查询。。xD@VlasiuRobert-更新答案,向您展示如何执行此操作。