Conexão com o banco de dados e inserindo uma imagem no banco.

10/08/2015

Boa tarde!

Estou com um problema sério. Vivo pesquisando meios para fazer uma conexão com o banco de dados SQL Server 2014 Express e o C#. E assim, inserir uma imagem nesse banco. Nos vídeos que assisto dão tudo certo. Agora, quando desenvolvo para a minha aplicação dá tudo errado. Veja a imagem e os códigos:

[img:descricao=Erro ao fazer uma conexão para inserção de imagem.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150810-165851.jpg[/img]

 public partial class frmVoce : Form
    {
        
        SqlConnection conn = new SqlConnection(@"Data Source=fabiano-pc\sqlexpress;Initial Catalog=UserLogin;Integrated Security=True");

        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();

        int i = 0;
        string imgLoc = "";

        public frmVoce()
        {
            InitializeComponent();
        }

        private void Voce_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'userLoginDataSet1.tbVoce' table. You can move, or remove it, as needed.
            this.tbVoceTableAdapter.Fill(this.userLoginDataSet1.tbVoce);

            SqlConnection conn = new SqlConnection(@"Data Source=fabiano-pc\sqlexpress;Initial Catalog=UserLogin;Integrated Security=True");
            //conn.ConnectionString = Properties.Settings.Default.UserLoginConnectionString1;

            try
            {
                conn.Open();
                MessageBox.Show("Conexão realizada com sucesso!", "Realizando uma conexão...", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(String.Format("Fala ao realizar a conexão! Tente Novamente. : ", ex.Message));
            }

            habilita_campos();
            dgvVoce.RowTemplate.Height = 180;
            showdata();
        }

Esses códigos são para inserir uma imagem no banco de dados. 

private void picSalvar_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=fabiano-pc\sqlexpress;Initial Catalog=UserLogin;Integrated Security=True"); ;
            conn.Open();
            SqlCommand cmm = new SqlCommand("INSERT INTO tbVoce(CodVoce, DtNascimento, IdadeVoce, NomeVoce, DtAtual, FotoVoce, EnderecoVoce, TelFixo, Operadora, TelCel, Texto)VALUES('" + txtCodigo.Text + "','" + dtpNascimento.Text + "','" + txtIdade.Text + "','" + txtNome.Text + "','" + dtpHoje.Text + "', @FotoVoce,'" + txtEndereco.Text + "','" + mskTelefone.Text + "','" + cbCelular.Text + "', '" + mskCelular.Text + "')", conn);
            MemoryStream stream = new MemoryStream();
            picFoto.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] pic = stream.ToArray();
            cmm.Parameters.AddWithValue("@FotoVoce", pic);

            i = cmm.ExecuteNonQuery();
            if (i > 0)
            {
                MessageBox.Show("Dados salvos com sucesso!" + i + "Row");
            }
            conn.Close();
        }

Fabiano Silva

Melhor resposta

12/08/2015

Funcionou Fabiano?

Fabiano Lux

Currículo
Responder Citar

Outras Respostas

10/08/2015

Jothaz

Tente alterar a expressão para:

 + "'," +  @FotoVoce + ",'" +


Mas acho que a melhor saída é simplifique sua query de insert.
Coloque somente os campos obrigatórios e a imagem.
E coloque todos os campos que for inserir como parâmetro.
Responder Citar

11/08/2015

Fabiano Silva

Já tentei fazer isso. Ñ deu certo.
Responder Citar

11/08/2015

Fabiano Lux Currículo

Acho que faltou você definir a conexão para o SqlCommand. Algo assim:

            SqlCommand cmm;
            cmm.Connection = conn;
            cmm = new SqlCommand("INSERT INTO tbVoce(CodVoce, DtNascimento, IdadeVoce, NomeVoce, DtAtual, FotoVoce, EnderecoVoce, TelFixo, Operadora, TelCel, Texto)VALUES('" + txtCodigo.Text + "','" + dtpNascimento.Text + "','" + txtIdade.Text + "','" + txtNome.Text + "','" + dtpHoje.Text + "', @FotoVoce,'" + txtEndereco.Text + "','" + mskTelefone.Text + "','" + cbCelular.Text + "', '" + mskCelular.Text + "')", conn);
Responder Citar

14/08/2015

Fabiano Silva

funcionou.
Responder Citar