c# - 从 Datagridviewcells 更新 Oracle 表
问题描述
我已经将 XML 文件加载到 DataGridView 中。从那里,我需要捕获三个特定列的值并更新 Oracle 数据表。
private void btnImpRetorno_Click(object sender, EventArgs e)
{
// Número da nota fiscal
DataGridViewCell dgvnumeronfse = dgvDadosNota[1, 0];
Int32 numeronfse = Convert.ToInt32(dgvnumeronfse.Value);
// Data e hora
DataGridViewCell dgvdata = dgvDadosNota[3, 0];
DataGridViewCell dgvhora = dgvDadosNota[4, 0];
string datahora = Convert.ToString(dgvdata.Value) + " " + Convert.ToString(dgvhora.Value);
// Código de autenticidade da nota
DataGridViewCell dgvcodigo = dgvDadosNota[8, 0];
string codigo = Convert.ToString(dgvcodigo.Value);
//edtNumero.Text = Convert.ToString(datahora);
string textoupdate = "update tasy.nota_fiscal set nr_nfe_imp = @NOTA where nr_sequencia = @SEQUENCIA; ";
using (OracleConnection conexao = new OracleConnection(conexaoOracle12g))
{
OracleCommand comandoupdate = new OracleCommand(textoupdate, conexao);
comandoupdate.Parameters.Add("@NOTA", OracleDbType.Int32);
comandoupdate.Parameters["@NOTA"].Value = numeronfse;
comandoupdate.Parameters.Add("@DATAHORA", OracleDbType.Varchar2).Value = datahora;
comandoupdate.Parameters.Add("@CODIGO", OracleDbType.Varchar2).Value = codigo;
comandoupdate.Parameters.Add("@SEQUENCIA", OracleDbType.Int32);
comandoupdate.Parameters["@SEQUENCIA"].Value = Convert.ToInt32(edtSequencia.Text);
conexao.Open();
Int32 linhasatualizadas = comandoupdate.ExecuteNonQuery();
MessageBox.Show("Linhas Atualizadas {0}", Convert.ToString(linhasatualizadas));
}
我测试了从 Datagridview 获得的所有三个字符串,它们都没有返回空值。该序列是数据库中的有效序列。
我找不到我的错误在哪里。
解决方案
首先,您的更新字符串不正确。通常 Oracle 使用“:”作为参数前缀,您必须删除“;” 在你的字符串的末尾。
string textoupdate = "update tasy.nota_fiscal set nr_nfe_imp = :NOTA where nr_sequencia = :SEQUENCIA";
然后您设置了 4 个参数,但在您的更新字符串中只有 2 个(:NOTA 和 :SEQUENCIA)
comandoupdate.Parameters.Add("NOTA", OracleDbType.Int32);
comandoupdate.Parameters["NOTA"].Value = numeronfse;
comandoupdate.Parameters.Add("SEQUENCIA", OracleDbType.Int32);
comandoupdate.Parameters["SEQUENCIA"].Value = Convert.ToInt32(edtSequencia.Text);
推荐阅读
- javascript - Redux + Typescript + 功能组件:导入的组件需要来自 Redux 的 props
- java - 为什么我们不能将所有字符串存储在字符串池中?
- python - Python 3,如何在 tkiner Combobox 中使用全局变量
- cmake - 如何将 --whole-archive 标志添加到 cmake 中的导入目标?
- c# - 比较字符串列表的日期与数据表的日期并更新数据表 C#
- javascript - 推送到heroku时执行/usr/bin ls-remote -h -t ssh://git@github.com/xxxx/xxxx.git 时出错
- ios - 如何等到firebase实时数据库返回数据iOS Swift
- varnish - 从缓存发出清漆服务请求(cookies被清除)
- zeromq - Minimizing ZeroMQ round trip latency
- python - sklearn决策树的遍历