更新和删除按钮C#
我为更新按钮和删除按钮编写了代码。 我的目的是更新和删除插入到数据库中的数据(使用phpmyadmin在mysql中创建) 更新按钮代码:更新和删除按钮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
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
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!");
}
我不想听起来很刺耳,但你的代码不是很好。需要改进的要点:
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注入考虑先学习SQLSQL注入
。。。一定要经常考虑。拉胡尔是正确的。已使用此记录更新答案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我没有任何问题。