none
comando "update"

    問題

  • pessoal,

    estou tentando utilizar o comando "update" em minha aplicação, mas infelizmente não estou conseguindo. Já tentei de várias formas, sem sucesso. Abaixo segue minha classe de conexão(Firebird), e logo em seguinte onde está acontecendo o erro. Espero que possam me ajudar. Agradeço a todos antecipadamente.

    namespace ControleLocadora
    
    {
    
     class ConexaoFB
    
     {
    
      private string StringConnetion;
    
      private FbConnection FbConn;
    
      private FbTransaction Fbtrans = null;
    
      private FbDataAdapter FbDA;
    
      private DataSet Ds;
    
    
    
      public FbDataAdapter FbDA1
    
      {
    
       get { return FbDA; }
    
       set { FbDA = value; }
    
      }
    
      public FbDataAdapter fbDA1;
    
    
    
      private FbDataReader FbDR; //tornar public o datareader para executar comando SQL (2)
    
    
    
      public FbDataReader FbDR1
    
      {
    
       get { return FbDR; }
    
       set { FbDR = value; }
    
      }
    
    
    
      //public FbDataReader FbDR;
    
    
    
      public ConexaoFB(string Conn)
    
      {
    
       this.StringConnetion = Conn;
    
       FbConn = new FbConnection(StringConnetion);
    
      }
    
      public void iniciaDataAdpter(string instrucaoSQL)
    
      {
    
       FbDA1 = new FbDataAdapter(instrucaoSQL, this.FbConn);
    
       FbDA1.SelectCommand.Parameters.Clear();
    
      }
    
      public Boolean abrirConexao()
    
      {
    
       try
    
       {
    
        this.FbConn.Open();
    
        return true;
    
       }
    
       catch (Exception ex)
    
       {
    
        return false;
    
       }
    
      }
    
      public Boolean fecharConexao()
    
      {
    
       try
    
       {
    
        this.FbConn.Close();
    
        return true;
    
       }
    
       catch (Exception ex)
    
       {
    
        return false;
    
       }
    
      }
    
      public Boolean executarSQL(int tipo)
    
      {
    
       this.FbConn.Open();
    
       this.Fbtrans = this.FbConn.BeginTransaction();
    
    
    
       if (tipo == 1)
    
       {
    
        try
    
        {
    
         FbDA1.SelectCommand.Transaction = this.Fbtrans;
    
         FbDA1.SelectCommand.ExecuteNonQuery();
    
         this.Fbtrans.Commit();
    
         return true;
    
        }
    
        catch (Exception ex)
    
        {
    
         this.Fbtrans.Rollback();
    
         return false;
    
        }
    
       }
    
       else if (tipo == 2)
    
       {
    
        try
    
       {
    
        FbDA1.SelectCommand.Transaction = this.Fbtrans;
    
        FbDR = FbDA1.SelectCommand.ExecuteReader();
    
        return true;
    
       }
    
       catch (Exception ex)
    
       {
    
        return false;
    
       }
    
      }
    
       else
    
       {
    
        return false;
    
       }
    
      }
    
    
    
    
    
      }
    
     }

    Aqui segue o código, e o erro que está aparecendo.

        

     

    private void btnAlterar_Click(object sender, EventArgs e)

    ConFB = new ConexaoFB(strConexao); ConFB.iniciaDataAdpter("update filme set cod_filme=@cod_filme, nome_filme=@nome_filme, genero=@genero " + "estoque=@estoque, preco=@preco where cod_filme=@cod_filme;"); this.ConFB.abrirConexao(); this.ConFB.fbDA1.SelectCommand.Parameters.Clear(); this.ConFB.fbDA1.SelectCommand.Parameters.Add("@cod_filme", txtCodFilme.Text); //erro --> "referência de objeto não definida para uma instância de um objeto" this.ConFB.fbDA1.SelectCommand.Parameters.Add("@nome_filme", txtNomeFilme.Text); this.ConFB.fbDA1.SelectCommand.Parameters.Add("@genero", txtGenero.Text); this.ConFB.fbDA1.SelectCommand.Parameters.Add("@preco", Convert.ToDecimal(txtPreco.Text)); this.ConFB.fbDA1.SelectCommand.Parameters.Add("@estoque",Convert.ToInt32(txtEstoque.Text)); if (ConFB.executarSQL(2)) { MessageBox.Show("Atualização realizada com sucesso! "); this.ConFB.fecharConexao(); } else { MessageBox.Show("Erro ao atualizar os dados! "); this.ConFB.fecharConexao(); }
    • 已編輯 kjgomes 2010年9月4日 下午 09:24 acerto digitação
    2010年9月4日 下午 09:22

所有回覆

  • Se você está utilizando um Comando Update, então ao adicionar os parâmetros você também precisa informar que se trata de um UpdateCommand.

    Troque:

    this.ConFB.fbDA1.SelectCommand.Parameters.Add("@nome_filme", txtNomeFilme.Text);

    Por:

    this.ConFB.fbDA1.UpdateCommand.Parameters.Add("@nome_filme", txtNomeFilme.Text);

     

    *Altere todas as ocorrências do SelectCommand.Parameters.Add por UpdateCommand.Parameters.Add

     

    2010年9月4日 下午 11:39
  • Caro amigo Roberto,

    fiz a alteração que recomendou, porém o erro continua...inclusive o erro começa na linha this.ConFB.fbDA1.SelectCommand.Parameters.Clear();, e se deixo esta comentada, o erro passa para a próxima linha, e assim sucessivamente.

     

    • 已編輯 kjgomes 2010年9月5日 下午 12:24 erro
    2010年9月5日 下午 12:24