none
inserindo items do ListBox no banco de dados RRS feed

  • Pergunta

  • Bom dia,

    estou querendo inserir os items de uma listbox no banco de dados, mas já que o listbox tem vários items, como faço para ele adicionar todos??

    terei que fazer um campo na tabela do banco para cada um?, e como faço o código?

    terça-feira, 5 de julho de 2011 13:44

Respostas

  • Segue um exemplo, espero que ajude, basta apenas adaptar para sua rotina, o nome da tabela foi criada como exemplo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace WindowsFormsApplication2
    {
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //Adicionando valores ao listbox
          lstNomes.Items.Add("Rodrigo");
          lstNomes.Items.Add("Roberto");
          lstNomes.Items.Add("Ingrid");
          lstNomes.Items.Add("Aline");
          lstNomes.Items.Add("Adriana");
        }
    
        //Método de inserção de nome no banco de dados
        private void btnInserirBanco_Click(object sender, EventArgs e)
        {
          //Percorrendo listbox e gravando no banco de dados
          for (int i = 0; i < lstNomes.Items.Count; i++)
          {
            //Passando valor atual do listbox
            InserirBanco(lstNomes.Items[i].ToString());
          }
        }
    
        public static void InserirBanco(string _nome)
        {
          using (SqlConnection conn = new SqlConnection("String de conexao aqui"))
          {
            //Query de inserção no banco exemplo
            string _query = "INSERT tb_Nomes (Nome) VALUES (@Nome)";
    
            //Instancia do SqlCommand, passando query e conexao
            //como parametros atraves do contrustor da propia classe
            SqlCommand cmd = new SqlCommand(_query, conn);
    
            //Adicionando parametros
            cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = _nome;
    
            //Tentando gravar no banco
            try
            {
              //Abrindo conexao
              conn.Open();
    
              //Executando comando de inserção
              cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
              //Rotina de tratamento de erro
            }
          }
        }
      }
    }
    
    

     
    Vitor Mendes | Seu feedback é muito importante para todos!
    • Marcado como Resposta Faussuaf terça-feira, 5 de julho de 2011 18:23
    terça-feira, 5 de julho de 2011 15:04
  • Utilize esta rotina, só mudei a logica, no final da rotina ele vai gravar no banco, utilizei como delimitador a ",":
    Rodrigo, Roberto, Ingrid, Aline, Adriana


    Código:
    //Método de inserção de nome no banco de dados
    private void btnInserirBanco_Click(object sender, EventArgs e)
    {
    	//String para guarda nomes
    	string _nomes = String.Empty;
    
    	//Varrendo listbox
    	for (int i = 0; i < lstNomes.Items.Count; i++)
    	{
    		//Verificando se é o ultimo nome do listbox, para nao adicionar virgular
    		if (lstNomes.Items.Count - 1 != i)
    		{
    			_nomes += lstNomes.Items[i].ToString() + ", ";
    		}
    		else
    		{
    			_nomes += lstNomes.Items[i].ToString();
    		}
    	}
    	//Passando string com nomes do listbox
    	InserirBanco(_nomes);
    }
    

    Caso a resposta tenha lhe ajudado, marque como Resposta
    Vitor Mendes | Seu feedback é muito importante para todos!

    • Marcado como Resposta Faussuaf terça-feira, 5 de julho de 2011 18:23
    terça-feira, 5 de julho de 2011 15:33

Todas as Respostas

  • Segue um exemplo, espero que ajude, basta apenas adaptar para sua rotina, o nome da tabela foi criada como exemplo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace WindowsFormsApplication2
    {
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //Adicionando valores ao listbox
          lstNomes.Items.Add("Rodrigo");
          lstNomes.Items.Add("Roberto");
          lstNomes.Items.Add("Ingrid");
          lstNomes.Items.Add("Aline");
          lstNomes.Items.Add("Adriana");
        }
    
        //Método de inserção de nome no banco de dados
        private void btnInserirBanco_Click(object sender, EventArgs e)
        {
          //Percorrendo listbox e gravando no banco de dados
          for (int i = 0; i < lstNomes.Items.Count; i++)
          {
            //Passando valor atual do listbox
            InserirBanco(lstNomes.Items[i].ToString());
          }
        }
    
        public static void InserirBanco(string _nome)
        {
          using (SqlConnection conn = new SqlConnection("String de conexao aqui"))
          {
            //Query de inserção no banco exemplo
            string _query = "INSERT tb_Nomes (Nome) VALUES (@Nome)";
    
            //Instancia do SqlCommand, passando query e conexao
            //como parametros atraves do contrustor da propia classe
            SqlCommand cmd = new SqlCommand(_query, conn);
    
            //Adicionando parametros
            cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = _nome;
    
            //Tentando gravar no banco
            try
            {
              //Abrindo conexao
              conn.Open();
    
              //Executando comando de inserção
              cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
              //Rotina de tratamento de erro
            }
          }
        }
      }
    }
    
    

     
    Vitor Mendes | Seu feedback é muito importante para todos!
    • Marcado como Resposta Faussuaf terça-feira, 5 de julho de 2011 18:23
    terça-feira, 5 de julho de 2011 15:04
  • Beleza,,,

    agora soh mais uma duvida,,se eu escolher mais de um item, ele vai ficar junto no mesmo campo da tabela do banco?

    terça-feira, 5 de julho de 2011 15:12
  • Beleza,,,

    agora soh mais uma duvida,,se eu escolher mais de um item, ele vai ficar junto no mesmo campo da tabela do banco?

    A rotina que foi demostrada acima, vai gravar cada pessoa separada no banco de dados, você quer gravar todos em uma linha só exemplo:

    Ao inves disso:

    ID Nome
    1 Roberto
    2 Aline
    3 Ingrid
    4 Roger

    Você quer isso:

    ID Nome
    1 Roberto,Aline,Ingrid,Roger 


    Vitor Mendes | Seu feedback é muito importante para todos!
    terça-feira, 5 de julho de 2011 15:18
  • Isso mesmo, eu preciso que ele salve mais de um item em um campo da tabela do banco de dados
    terça-feira, 5 de julho de 2011 15:22
  • Utilize esta rotina, só mudei a logica, no final da rotina ele vai gravar no banco, utilizei como delimitador a ",":
    Rodrigo, Roberto, Ingrid, Aline, Adriana


    Código:
    //Método de inserção de nome no banco de dados
    private void btnInserirBanco_Click(object sender, EventArgs e)
    {
    	//String para guarda nomes
    	string _nomes = String.Empty;
    
    	//Varrendo listbox
    	for (int i = 0; i < lstNomes.Items.Count; i++)
    	{
    		//Verificando se é o ultimo nome do listbox, para nao adicionar virgular
    		if (lstNomes.Items.Count - 1 != i)
    		{
    			_nomes += lstNomes.Items[i].ToString() + ", ";
    		}
    		else
    		{
    			_nomes += lstNomes.Items[i].ToString();
    		}
    	}
    	//Passando string com nomes do listbox
    	InserirBanco(_nomes);
    }
    

    Caso a resposta tenha lhe ajudado, marque como Resposta
    Vitor Mendes | Seu feedback é muito importante para todos!

    • Marcado como Resposta Faussuaf terça-feira, 5 de julho de 2011 18:23
    terça-feira, 5 de julho de 2011 15:33
  • Vou tentar fazer aki,,

    jah posto o resultado

    terça-feira, 5 de julho de 2011 16:03
  • Vitor Mendes, muito Obrigado mesmo,,,to desde demanhã tentando, mas consegui fazer ele salvar usando mais de um item usando esse código que você passou..

     

    Muito Obrigaod mesmo!!!

    terça-feira, 5 de julho de 2011 18:24