0

我正在通过 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.ExecutaComando(insertd.ToString());” 这是我创建的用于执行命令的类。

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

谢谢。

4

2 回答 2

2

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

关于您需要验证用户输入的主题,我建议两件事。首先是通过在命令中使用参数来消除 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改用。

于 2013-02-09T19:43:39.320 回答
0

链接将对您有用

Quote: 这将执行以下操作:

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