Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新和删除按钮C#_C#_Mysql_Sql_Sql Delete - Fatal编程技术网

更新和删除按钮C#

更新和删除按钮C#,c#,mysql,sql,sql-delete,C#,Mysql,Sql,Sql Delete,我为更新按钮和删除按钮编写了代码。 我的目的是更新和删除插入到数据库中的数据(使用phpmyadmin在mysql中创建) 更新按钮代码: void ModificaBtnClick(object sender, EventArgs e) { Connessione.Open(); MySqlDataAdapter SDA=new MySqlDataAdapter("UPDATE INTO GARA set nome_gara='"+textBox1.Te

我为更新按钮和删除按钮编写了代码。 我的目的是更新和删除插入到数据库中的数据(使用phpmyadmin在mysql中创建)

更新按钮代码:

void ModificaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlDataAdapter SDA=new MySqlDataAdapter("UPDATE INTO GARA set nome_gara='"+textBox1.Text+"',giudice='"+textBox2.Text+"',località='"+textBox3.Text+"',data='"+textBox4.Text+"',tpsopm='"+textBox5.Text+"',tpmopm='"+textBox6.Text+"',tpstot='"+textBox7+"',tpmtot='"+textBox8.Text+"')VALUES'"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
        SDA.SelectCommand.ExecuteNonQuery();
        Connessione.Close();

        MessageBox.Show("Dati modificati correttamente!");

    }
void CancellaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlDataAdapter SDA=new MySqlDataAdapter("DELETE FROM GARA(nome_gara,giudice,località,data,tpsopm,tpmopm,tpstot,tpmtot)VALUES'"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
        SDA.SelectCommand.ExecuteNonQuery();
        Connessione.Close();
        MessageBox.Show("Dati cancellati correttamente!");
    }
删除按钮代码:

void ModificaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlDataAdapter SDA=new MySqlDataAdapter("UPDATE INTO GARA set nome_gara='"+textBox1.Text+"',giudice='"+textBox2.Text+"',località='"+textBox3.Text+"',data='"+textBox4.Text+"',tpsopm='"+textBox5.Text+"',tpmopm='"+textBox6.Text+"',tpstot='"+textBox7+"',tpmtot='"+textBox8.Text+"')VALUES'"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
        SDA.SelectCommand.ExecuteNonQuery();
        Connessione.Close();

        MessageBox.Show("Dati modificati correttamente!");

    }
void CancellaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlDataAdapter SDA=new MySqlDataAdapter("DELETE FROM GARA(nome_gara,giudice,località,data,tpsopm,tpmopm,tpstot,tpmtot)VALUES'"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
        SDA.SelectCommand.ExecuteNonQuery();
        Connessione.Close();
        MessageBox.Show("Dati cancellati correttamente!");
    }

我没有语法错误,但当我运行程序并尝试修改或删除数据时,编译器会显示一个未处理的异常(抛出了一个类型为MySql.data.MySqlClient.MySqlException的未处理异常)。当我退出窗口时,这一行被选中
SDA.SelectCommand.ExecuteOnQuery()

我对“插入”按钮使用相同的指令,但它可以工作

你能帮帮我吗


编辑:我尝试了您的解决方案,但这些值不会更新到数据库中。我可以将它们修改到dataGridView中,但当我按下更新按钮时,它们不会更改,更新不需要,只需要

UPDATE   GARA 
 SET set nome_gara='"+textBox1.Text+"'
,giudice='"+textBox2.Text+"'
,località='"+textBox3.Text+"'
,.....
最终添加where条件以更新所需的行

删除不需要值您删除具有匹配where条件的行,例如:

DELETE FROM GARA
WHERE nome_gara='"+textBox1.Text+"'"
确保正确的where条件


在字符串连接中要小心,sql注入可能会带来风险

更新不需要插入,只需要

UPDATE   GARA 
 SET set nome_gara='"+textBox1.Text+"'
,giudice='"+textBox2.Text+"'
,località='"+textBox3.Text+"'
,.....
最终添加where条件以更新所需的行

删除不需要值您删除具有匹配where条件的行,例如:

DELETE FROM GARA
WHERE nome_gara='"+textBox1.Text+"'"
确保正确的where条件


在使用字符串concat时要小心,因为sql注入有风险

我并不想说得太苛刻,但您的代码不是很好。需要改进的要点:

  • 使用正确的SQL
  • 不需要时停止使用MySqlDataAdapter
  • 使用参数化查询来避免SQL注入(不,没有任何理由不这样做!)
  • 这三点将导致以下代码:

    void ModificaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlCommand cmd = new MySqlCommand("UPDATE GARA set nome_gara=@nomegara,giudice=@giudice,località=@localita,data=@data ...",Connessione);
    
        cmd.Parameters.AddWithValue("@nomegara", textBox1.Text);
        cmd.Parameters.AddWithValue("@giudice", textBox2.Text);
        ...
    
        cmd.ExecuteNonQuery();
    
        MessageBox.Show("Dati modificati correttamente!");
    }
    
    void CancellaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlCommand cmd =new MySqlCommand("DELETE FROM GARA WHERE Field = @value, ...",Connessione);
    
        cmd.Parameters.AddWithValue("@value", ...);
        ...
    
        cmd.ExecuteNonQuery();
        MessageBox.Show("Dati cancellati correttamente!");
    }
    

    我不想听起来很刺耳,但你的代码不是很好。需要改进的要点:

  • 使用正确的SQL
  • 不需要时停止使用MySqlDataAdapter
  • 使用参数化查询来避免SQL注入(不,没有任何理由不这样做!)
  • 这三点将导致以下代码:

    void ModificaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlCommand cmd = new MySqlCommand("UPDATE GARA set nome_gara=@nomegara,giudice=@giudice,località=@localita,data=@data ...",Connessione);
    
        cmd.Parameters.AddWithValue("@nomegara", textBox1.Text);
        cmd.Parameters.AddWithValue("@giudice", textBox2.Text);
        ...
    
        cmd.ExecuteNonQuery();
    
        MessageBox.Show("Dati modificati correttamente!");
    }
    
    void CancellaBtnClick(object sender, EventArgs e)
    {
        Connessione.Open();
        MySqlCommand cmd =new MySqlCommand("DELETE FROM GARA WHERE Field = @value, ...",Connessione);
    
        cmd.Parameters.AddWithValue("@value", ...);
        ...
    
        cmd.ExecuteNonQuery();
        MessageBox.Show("Dati cancellati correttamente!");
    }
    


    语法不正确,
    从GARA中删除,其中ID=@ID
    ,您已经从GARA中删除了
    (列…
    )。如果希望保留数据库,还可以使用sql参数而不是字符串连接。否则,您将打开sql注入。除此之外,直接使用
    MySqlCommand
    而不是
    MySqlDataAdapter
    。内部异常应该为您提供更具体的信息,您应该使用参数。永远不要将这些值连接到查询中。阅读SQL注入考虑学习SQL firstSyntax是不正确的,
    从GARA中删除,其中ID=@ID
    ,您有
    从GARA中删除(列…
    )。如果希望保留数据库,还可以使用sql参数而不是字符串连接。否则,您将打开sql注入。除此之外,直接使用
    MySqlCommand
    而不是
    MySqlDataAdapter
    。内部异常应该为您提供更具体的信息,您应该使用参数。永远不要将这些值连接到查询中。阅读SQL注入考虑先学习SQL
    SQL注入
    。。。一定要经常考虑。拉胡尔是正确的。已使用此记录更新答案too@scaisEdge展示如何做而不是推荐如何做如何?OP显然是新的,所以他应该如何实现您的建议?@ThorstenDittmar正确,但我有一个关于sql注入的biref建议,因为实际上主要的问题似乎是基本的sql sintax。。我想这是第一次。。在这次新行动中的建议。。但是,如果您愿意,您可以为此添加一些带有适当(且有用)指示的链接。
    SQL注入
    。。。一定要经常考虑。拉胡尔是正确的。已使用此记录更新答案too@scaisEdge展示如何做而不是推荐如何做如何?OP显然是新的,所以他应该如何实现您的建议?@ThorstenDittmar正确,但我有一个关于sql注入的biref建议,因为实际上主要的问题似乎是基本的sql sintax。。我想这是第一次。。在这次新行动中的建议。。但是如果你想的话,你可以添加一些带有适当(和有用)指示的链接。我知道我的代码还远远不够完美。我是个初学者,我还有很多东西要学。谢谢你的建议我知道,我可以从你的代码中看出:-)我这么说是为了说明你更改代码的紧迫性。我已经尝试过你的解决方案,但我对ExecuteOnQuery()也有同样的问题。有什么想法吗?是的。我们知道。但底层错误消息是什么?MySql.Data.MySqlClient.MySqlException:在命令执行期间遇到致命错误。-->MySql.Data.MySqlClient.MySqlException:必须定义参数'@localita'。还有一长串其他错误。我定义了参数'localitá',事实上,对于insert我没有任何问题。我知道我的代码还远远不够完美。我是个初学者,我还有很多东西要学。谢谢你的建议我知道,我可以从你的代码中看出:-)我这么说是为了说明你更改代码的紧迫性。我已经尝试过你的解决方案,但我对ExecuteOnQuery()也有同样的问题。有什么想法吗?是的。我们知道。但底层错误消息是什么?MySql.Data.MySqlClient.MySqlException:在命令执行期间遇到致命错误。-->MySql.Data.MySqlClient.MySqlException:必须定义参数'@localita'。还有一长串其他错误。我定义了参数'localitá',事实上,对于insert我没有任何问题。