none
Duvida: Exception no método SQLCommnad ExecuteNonQuery(); RRS feed

  • Pergunta

  • Senhores, poderiam me ajudar com este caso?

    Quero que a minha aplicação persista os dados no banco. 

    Gostaria de saber porque fico tomando essa Excepition. E por causa do banco?

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Data;

    using System.Data.Sql;

    using System.Data.SqlClient;

     

    public partial class Cadastros_cadastrodeusuarioTAM : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

     

        }

        protected void Button1_Click(object sender, EventArgs e)

        {

     

            // Todas as strings utilizadas no codigo

                const string conex = @"Data Source=PCT511246;Initial Catalog=TAM;Integrated Security=True";

                string nome = TextBox1.Text;

                string tipocliente = TextBox2.Text;

                string idcorporativo = TextBox3.Text;

                string status = TextBox4.Text;

                string organizacao = TextBox5.Text;

                string departamento = TextBox6.Text;

                string telefone = TextBox7.Text;

                string email = TextBox8.Text;

                string site = DropDownList1.Text;

                string andar = TextBox9.Text;

                string connectando = "insert into TVT_PESSOAS_teste (FIRST_NAME, CLIENT_TYPE, CORPORATE_ID, PROFILE_STATUS, ORGANIZACAO, DEPARTAMENTO, PHONE_NUMBER_BUSINESS, INTERNET_EMAIL, SITE, ANDAR) VALUES (" + nome + "," + tipocliente + "," + idcorporativo + "," + status + "," + organizacao + "," + departamento + "," + telefone + "," + email + "," + site + "," + andar + ")";

                SqlConnection con = new SqlConnection(conex);

                SqlCommand cmmd = new SqlCommand();

     

     

                if (TextBox1.Text == "")

                {

                    Label1.Text = "Campo vazio!";

                }

                else

                {

     

                   // cmmd.CommandText = connectando;

     

                // Abro a conexão com o banco.

                con.Open();

     

                // Como o tipo de comando que vou fazer no banco de dados é uma inserção (insert)

                //vou utilizar o método ExecuteNonQuery da classe SqlCommand.

                // ExecuteNonQuery = executa declarações SQL que não retornam dados, tais como INSERT, UPDATE, DELETE e SET.

                //cmmd.CommandText = "insert into TVT_PESSOAS_teste (FIRST_NAME, CLIENT_TYPE, CORPORATE_ID, PROFILE_STATUS, ORGANIZACAO, DEPARTAMENTO, PHONE_NUMBER_BUSINESS, INTERNET_EMAIL, SITE, ANDAR) VALUES (" + nome + "," + tipocliente + "," + idcorporativo + "," + status + "," + organizacao + "," + departamento + "," + telefone + "," + email + "," + site + "," + andar + ")";

     

              cmmd.ExecuteNonQuery(); (Aqui aparece a Exception)

     

                // Após executar o comando no banco de dados é SEMPRE necessário fechar a conexão com

                // o banco de dados.

                con.Close();

     

                Label1.Text = "Cadastrado com sucesso Sucesso!";

     

     

                }

               

        }

    }

     

     

    quarta-feira, 26 de outubro de 2011 19:36

Respostas

  • Helder,

    Analisando o erro, vi que o seu problema é que você não esta passando o objeto de conexão para o objeto command.

    Faça desta forma que irá funcionar:

     

    SqlConnection con = new SqlConnection(conex);

    SqlCommand cmmd = new SqlCommand();

    cmmd.Connection = con;

    cmmd.CommandText = connectando;

    cmmd.Connection.Open();

    cmmd.ExecuteNonQuery();

    • Sugerido como Resposta AndesBH quinta-feira, 27 de outubro de 2011 13:06
    • Marcado como Resposta Helder Lopes - hgolive quinta-feira, 27 de outubro de 2011 13:33
    quinta-feira, 27 de outubro de 2011 13:05

Todas as Respostas

  • Ola Helder,

    Pelo que vi no seu código, esta falando apenas você passar o comando SQL para o Sqlcommand

     

    SqlCommand cmmd = new SqlCommand();

    cmmd.CommandText = connectando (Esta linha esta comentada no seu código...)

    cmmd.ExecuteNonQuery()

     

    Se não for isso, posta o erro ai.

     

    Flws.


    • Sugerido como Resposta AndesBH quarta-feira, 26 de outubro de 2011 19:55
    • Editado AndesBH quarta-feira, 26 de outubro de 2011 19:57
    • Não Sugerido como Resposta AndesBH quinta-feira, 27 de outubro de 2011 13:06
    quarta-feira, 26 de outubro de 2011 19:55
  • Olá AndesBH.

     

    Na verdade a linha comentada foi uma tentativa que não deu certo.  

    O comando está mais acima:

     

    string connectando = "insert into TVT_PESSOAS_teste (FIRST_NAME, CLIENT_TYPE, CORPORATE_ID, PROFILE_STATUS, ORGANIZACAO, DEPARTAMENTO, PHONE_NUMBER_BUSINESS, INTERNET_EMAIL, SITE, ANDAR) VALUES (" + nome + "," + tipocliente + "," + idcorporativo + "," + status + "," + organizacao + "," + departamento + "," + telefone + "," + email + "," + site + "," + andar + ")";

     

    Esqueci de apagar as linhas comentadas acredito que elas não são uteis nesse codigo.

     

    Obrigado pela a anteção.

    quarta-feira, 26 de outubro de 2011 22:04
  • Qual o erro que esta gerando? Posta ele ai.
    quinta-feira, 27 de outubro de 2011 09:46
  • string connectando = "insert into TVT_PESSOAS_teste (FIRST_NAME, CLIENT_TYPE, CORPORATE_ID, PROFILE_STATUS, ORGANIZACAO, DEPARTAMENTO, PHONE_NUMBER_BUSINESS, INTERNET_EMAIL, SITE, ANDAR) VALUES ('" + nome + "','" + tipocliente + "','" + idcorporativo + "','" + status + "','" + organizacao + "','" + departamento + "','" + telefone + "','" + email + "','" + site + "','" + andar + "')";
    
    cmmd.CommandText = connectando;
    cmmd.Connection = con;
    cmmd.ExecuteNonQuery();
    

    Tenta com esse codigo. Coloquei a Connection do comando ligado à string de conexão, e alterei o insert.


    • Editado Lucas_Santos quinta-feira, 27 de outubro de 2011 11:49
    quinta-feira, 27 de outubro de 2011 11:47
  • Senhores,

    Realizei o teste que o Lucas sugeriu e a Exception persiste.

    Entendi que o Lucas mudou a String connectado os parâmetros de insert feito no SQL. "Que alias funcionam no SQL mesmo".

    Creio que não seja isso. 

     

    O erro que me aparece é esse.

    No intellissence fala que esse metodo executa comando de inserir no banco. Porém não estou conseguindo fazer.

    Pesquisei na internet se existe outras possibilidades de fazer isso mais todas ou grande maioria usa esse metudo ExecuteNonQuery

     

    Será que alguém conhece outra solução?


     

     

    quinta-feira, 27 de outubro de 2011 12:55
  • Helder,

    Analisando o erro, vi que o seu problema é que você não esta passando o objeto de conexão para o objeto command.

    Faça desta forma que irá funcionar:

     

    SqlConnection con = new SqlConnection(conex);

    SqlCommand cmmd = new SqlCommand();

    cmmd.Connection = con;

    cmmd.CommandText = connectando;

    cmmd.Connection.Open();

    cmmd.ExecuteNonQuery();

    • Sugerido como Resposta AndesBH quinta-feira, 27 de outubro de 2011 13:06
    • Marcado como Resposta Helder Lopes - hgolive quinta-feira, 27 de outubro de 2011 13:33
    quinta-feira, 27 de outubro de 2011 13:05
  • AndesBH, Muito obrigado.

     

    cmmd.Connection.Open();

     

    Era isso. Eu estava usando o SqlConnection con.open();

     

    Essa resposta me ajudara muito. Qualquer coisa estau por aqui.


    quinta-feira, 27 de outubro de 2011 13:37