none
Erro C# - me ajudem por favor RRS feed

  • Pergunta

  • obtive um erro e não estou entendendo, alguem pode me ajudar,

    escrevi este codigo para gravar de C# em sql server, mas esta dando o seguinte erro.:

    " É necessario declarar a variavel escalar "CodigoID" "

    segue o codigo.:

     

    private void bt_grava_Click(object sender, EventArgs e)

    {

     

    try
     

    {

     

    OleDbCommand cmd = new OleDbCommand();

     

    string query = "INSERT INTO Clientes VALUES(@CodigoID,@Nome)";

    cmd.CommandText = query;

    cmd.CommandType =

    CommandType.Text;

    cmd.Parameters.AddWithValue(

    "CodigoID", tb_codigo.Text);

    cmd.Parameters.AddWithValue(

    "Nome", tb_nome.Text);

    cmd.Connection = conexao;

    conexao.Open();

    //abrir a conexo aqui
     

    cmd.ExecuteNonQuery();

    // executar o insert

    conexao.Close();

     

    obrigado, Deus abençoe

    • Movido Ari C. Raimundo sexta-feira, 25 de março de 2011 12:11 Movido para fórum apropriado (De:C#)
    sexta-feira, 25 de março de 2011 11:15

Respostas

  • Neto,

    Se estiver utilizando OleDb os parâmetros devem ser passados como um símbolo de interrogação. Por exemplo:

     

    try

    {

        // cria comando

        var command = new OleDbCommand("INSERT INTO Clientes VALUES (?, ?)", connection);

     

        // parâmetros

        command.Parameters.AddWithValue("CodigoID", codigoId);

        command.Parameters.AddWithValue("Nome", nome);

     

        // abre conexão

        connection.Open();

     

        // executa comando

        command.ExecuteNonQuery();

    }

    catch (SqlException sqlEx)

    {

        // ...

    }

    catch (Exception ex)

    {

        // ...

    }

    finally

    {

        // fecha conexão

        if (connection.State == ConnectionState.Open)

            connection.Close();

    }

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    sexta-feira, 25 de março de 2011 12:31

Todas as Respostas

  • estou fazendo uma conecção com banco Sql Server, pra gravar informação e não estou conseguindo

    segue o erro .:

    private

    void bt_grava_Click(object sender, EventArgs e)

    {

     

    try

    {

    conexao.Open();

    conexao =

    new OleDbConnection();

     

    OleDbCommand sql = new OleDbCommand("insert into Clientes (CodigoID,Nome) values ('tb_codigo.Text','tb_nome.Text')");

     

    OleDbDataReader grava_dados = sql.ExecuteReader();

     

    while (grava_dados.Read())

    {

    sql.Parameters.AddWithValue(

    "CodigoID", tb_codigo.Text);

    sql.Parameters.AddWithValue(

    "Nome", tb_nome.Text);

    }

    sql.ExecuteNonQuery();

    grava_dados.Close();

    conexao.Close();

    }

     

    catch (OleDbException erro)

    {

     

    MessageBox.Show("Erro na gravao ! "+erro,"Falha !!");

    }

    

    alguem pode me dar uma mão,

    

    Deus abençoe

    • Mesclado Ari C. Raimundo sexta-feira, 25 de março de 2011 12:14 Pergunta duplicada
    quinta-feira, 24 de março de 2011 14:03
  • Boas,

    Voce ta fazendo mal... o ExecuteReader é para ler dados do SQL por exemplo um select * from tabela.

    Para inserir deve fazer o seguinte:

     SqlCommand cmd = new SqlCommand();
    
    
    
    
    
     string query = "INSERT INTO Customer VALUES(@CustomerID,@FirstName,@LastName,@Address,@HomePhone,@CellPhone,@Email)";
    
     cmd.CommandText = query;
    
     cmd.CommandType = CommandType.Text; 
    
    
    
    //aqui voce passa os valores da text box para o paramtetro
    
     cmd.Parameters.AddWithValue("@CustomerID", txtCustomerID);
    
    
    
     cmd.Parameters.AddWithValue("@FirstName", txtFirtName.Text );
    
     cmd.Parameters.AddWithValue("@LastName",txtLastName.Text );
    
        cmd.Parameters.AddWithValue("@Address",txtAddress.Text );
    
    
    
    
    
        cmd.Parameters.AddWithValue("@City",txtCity.Text );
    
    
    
    
    
        cmd.Parameters.AddWithValue("@StateProvince",txtStateProvince.Text );
    
    
    
        cmd.Parameters.AddWithValue("@ZipCode",txtZipCode.Text );
    
    
    
        cmd.Parameters.AddWithValue("@Country",txtCountryText );
    
        cmd.Parameters.AddWithValue("@HomePhone",txtHomePhone.Text );
    
        cmd.Parameters.AddWithValue("@CellPhone",txtCellPhone.Text );
    
    
    
        cmd.Parameters.AddWithValue("@AltPhone",txtAltPhone.Text );
    
    
    
        cmd.Parameters.AddWithValue("@Email",txtEmail.Text );
    
        cmd.Parameters.AddWithValue("@Status","P" );
    
    
    
        cmd.Parameters.AddWithValue("@DateAdded",DateTime.Now );
    
    
    
    
    
        cmd.Connection = conn;
    
    
    
        conn.open;//abrir a conexção aqui
    
    
    
        cmd.ExecuteNonQuery();/ executar o insert
    
        conn.close() //fechar
    
    

     

    • Sugerido como Resposta Levi Domingos quinta-feira, 24 de março de 2011 15:35
    quinta-feira, 24 de março de 2011 14:36
  • Bom dia Neto,

     

    Você declarou na sua SQL @CodigoID e @Nome. Ao declarar seus parametros você tamber deverá declarar o "@".

    Ficaria assim:

     

    cmd.Parameters.AddWithValue("@CodigoID", tb_codigo.Text);

    cmd.Parameters.AddWithValue("@Nome", tb_nome.Text);

     

    Lembre-se, se a resposta foi útil, marque-a.


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C# Junior
    MCTS Windows 7
    • Sugerido como Resposta Ari C. Raimundo sexta-feira, 25 de março de 2011 12:10
    • Não Sugerido como Resposta Ari C. Raimundo sexta-feira, 25 de março de 2011 12:31
    sexta-feira, 25 de março de 2011 11:43
  • Neto, seja apenas um pouco mais paciente e evite ficar duplicando seus posts...

    Se ainda ficou alguma dúvida ou erro, poste-os no post inicial mesmo.

    Sempre estaremos dispostos a ajudar, apenas algumas vezes demora um pouco mais.

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/d6742083-1e8e-4d71-860c-3eff78c987b7?prof=required


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C# Junior
    MCTS Windows 7
    sexta-feira, 25 de março de 2011 11:53
  • Neto,

    Estou enviando a sua thread para o fórum de ADO.NET. Das próximas vezes que tiver alguma dúvida sobre esse assunto poste por lá.

    Abraços.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    sexta-feira, 25 de março de 2011 12:11
  • Eu ja fiz isto, e erro passa a ser "voce precisa declarar a variavel escalar "@""
    sexta-feira, 25 de março de 2011 12:13
  • Neto,

    Se estiver utilizando OleDb os parâmetros devem ser passados como um símbolo de interrogação. Por exemplo:

     

    try

    {

        // cria comando

        var command = new OleDbCommand("INSERT INTO Clientes VALUES (?, ?)", connection);

     

        // parâmetros

        command.Parameters.AddWithValue("CodigoID", codigoId);

        command.Parameters.AddWithValue("Nome", nome);

     

        // abre conexão

        connection.Open();

     

        // executa comando

        command.ExecuteNonQuery();

    }

    catch (SqlException sqlEx)

    {

        // ...

    }

    catch (Exception ex)

    {

        // ...

    }

    finally

    {

        // fecha conexão

        if (connection.State == ConnectionState.Open)

            connection.Close();

    }

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    sexta-feira, 25 de março de 2011 12:31