EndExecuteNonQuery,它是什么,它做什么以及如何使用它

本文关键字:何使用 它是什么 EndExecuteNonQuery 什么 | 更新日期: 2023-09-27 17:58:24

我正在通过C#应用程序在mysql数据库中插入数据,我想知道插入是否成功。在互联网上搜索时,我读到了一些关于"EndExecuteNonQuery"的内容,但它并没有解释应该如何使用它。我不知道我可以使用它的方式,甚至不知道为什么要使用它。

try
        {
            cepescola = txtcepescola.Text + txtcepescola1.Text;
            num_escola = int.Parse(txtnumescola.Text);
            cnpj = txtcnpj.Text + txtcnpj2.Text;
            telefoneescola = txtddd.Text + txttel.Text;
            inserte.Append("Insert into estabelecimento ( Nome,CEP,Endereco,Numero,Bairro,UF,CNPJ,Telefone)");
            inserte.Append(" values ");
            inserte.Append("( '" + txtnomeescola.Text + "','" + cep + "','" + txtenderecoescola.Text + "','" + num_escola + "',");
            inserte.Append(" '" + txtbairroescola.Text + "','" + cbxufescola.Text + "','" + cnpj + "','" + telefoneescola + "')");
            conexao.ExecutaComando(inserte.ToString());
            groupBox2.Enabled = false;
            btnestabelecimento.Visible = false;
            btnlogin.Visible = true;
            txtlogin.Focus();
        }
        catch (Exception)
        {
            MessageBox.Show("Dados digitados em formato incorreto.", "Erro de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
            groupBox2.Enabled = true;
            btnestabelecimento.Visible = true;
            btnlogin.Visible = false;
            txtlogin.Focus();
        }

在这种情况下,我在哪里可以使用它?我应该更改什么?Obs:在"Conexão.ExecutionaComando(insertd.ToString())"中,这是我创建的一个用于执行命令的类。

还有一件事,我在出现异常时使用了Try和Catch,但如果用户在必须写数字的地方写单词,我想中止连接。我的应用程序正在查找错误,但无论如何都在插入。

谢谢。

EndExecuteNonQuery,它是什么,它做什么以及如何使用它

EndExecuteNonQueryBeginExecuteNonQuery一起用于异步执行数据库上的命令。我建议您在考虑异步运行查询之前,先更轻松地解决问题。

关于验证用户输入的需求,我建议两件事。第一个是通过在命令中使用参数来消除SQL注入攻击的风险。例如,不使用以下内容(为简洁起见,请减少):

var sql = "insert into estabelecimento (Nome) values ('" + txtnomeescola.Text + "')";

您应该使用以下内容:

var sql = "insert into estabelecimento (Nome) values (@nomeescola)";
//assume cmd is a SqlCommand instance
cmd.Parameters.AddWithValue("@nomeescola", txtnomeescola.Text);

其次,如果您需要对查询的输入执行验证,那么您应该在执行命令之前执行。您已经通过将num_escola参数解析为int来验证它,这将使它不再是字符串。您应该对其他数字参数执行同样的操作,也许可以考虑使用int.TryParse

此链接将对有用

报价:这会做一些事情,比如:

  1. 更新参数值(输出/返回)
  2. 检查异常(TDS流中的错误代码-违反约束等)
  3. 释放作为上述内容一部分缓冲的任何对象/数据等