Array
(
)

erro = {"Não foi possível converter o valor do parâmetro de String para Byte."}

Douglas Leandro
   - 08 jan 2010

Fala galera. Estou utilizando o C# 2005 e o SQL2005 a pouco tempo e estou com  o seguinte problema. O C# leê todo o programa e no final da o seguinte erro no --- da.InsertCommand.ExecuteReader();   erro = {"Não foi possível converter o valor do parâmetro de String para Byte."}   Segue abaixo o código inteiro.    

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace WindowsApplication1

{

public partial class DadosPessoais : Form

{

public DadosPessoais()

{

InitializeComponent();

}

private void btn_salvar_Click(object sender, EventArgs e)

{

try

{

SqlConnection cs = new SqlConnection("Data Source=DKAUF-PC; Initial Catalog=master; Integrated Security=TRUE");

SqlDataAdapter da = new SqlDataAdapter();

da.InsertCommand = new SqlCommand("INSERT INTO Cadastro(NOME, CPF, RG, ESTADOCIVIL, RUA, NUMERO, BAIRRO, CIDADE, CEP, FONERESIDENCIAL) VALUES(@NOME, @CPF, @RG, @ESTADOCIVIL, @RUA, @NUMERO, @BAIRRO, @CIDADE, @CEP, @FONERESIDENCIAL)", cs);

da.InsertCommand.Parameters.Add("@NOME", SqlDbType.NVarChar).Value = txtNome.Text.ToString();

da.InsertCommand.Parameters.Add("@CPF", SqlDbType.TinyInt).Value = txtCPF.Text;

da.InsertCommand.Parameters.Add("@RG", SqlDbType.TinyInt).Value = txtRG.Text;

da.InsertCommand.Parameters.Add("@ESTADOCIVIL", SqlDbType.NVarChar).Value = txtEstadoCivil.Text;

da.InsertCommand.Parameters.Add("@RUA", SqlDbType.NVarChar).Value = txtRrua.Text;

da.InsertCommand.Parameters.Add("@NUMERO", SqlDbType.TinyInt).Value = txtNumero.Text;

da.InsertCommand.Parameters.Add("@BAIRRO", SqlDbType.NVarChar).Value = txtBairro.Text;

da.InsertCommand.Parameters.Add("@CIDADE", SqlDbType.NVarChar).Value = txtCidade.Text;

da.InsertCommand.Parameters.Add("@CEP", SqlDbType.TinyInt).Value = txtCEP.Text;

da.InsertCommand.Parameters.Add("@FONERESIDENCIAL", SqlDbType.TinyInt).Value = txtFoneResidencial.Text;

cs.Open();

//MessageBox.Show(cs.State.ToString());

da.InsertCommand.ExecuteReader();

cs.Close();

}

catch(Exception erro)

{

MessageBox.Show("ERRO - Dados no inseridos!!");

}

}

}

}

    Desde já agradeço a ajuda de todos..

 

Paulo Sena
   - 08 jan 2010

Pelo que pude observar vc esta com problemas na conversão de valos na hora de adicionar os parametro ao command, muito provavelmente nas conversões de string para TinyInt, observe também o formato dos campos no banco, procure fazer a converser explicita de suas variáveis

da.InsertCommand.Parameters.Add("@NUMERO", SqlDbType.TinyInt).Value = txtNumero.Text;


[Explicita]

da.InsertCommand.Parameters.Add("@NUMERO", SqlDbType.Int).Value = Int.Parse(txtNumero.Text);


Douglas Leandro
   - 08 jan 2010

fala Paulo, valeu pela dica, eu alterei como indicaste, tanto no código como no banco, de TinyInt para Int, mas continua dando erro que agora é o seguinte:

erro = {"Valor demasiado grande ou demasiado pequeno para Int32."}   tentei converter para Byte com "BYTECONVERTER "  , e outros convert's também,  mas não obtive sucesso.     Continuo no aguardo de uma solução. Obrigado Paulo.    

Eleuterio Gonzalez
   - 16 fev 2010

Talves a modelagem de seus dados ou a conversão não esteja correta.