none
Gravar dados do Form em C# em BD SQL Server 2005

    Question

  • sou novo em desenvolvimento...

     

    criei um BD no sql 2005 Standart, com dados como ID, Nome e Telefone...

    No Visual Studio inseri um windows form em C#, coloquei um botão SALVAR, gostaria de criar uma classe string de conexão com BD, e ao clicar no botão SALVAR os dados serão gravados no BD...consegui via wizard...mais gostaria de saber como se faz isso na mão.

    Agradeço a ajuda

    Wednesday, April 30, 2008 11:30 PM

Answers

  • Gormadoc,

     

    Neste link vc vai encontrar como Conectar, Incluir, Consultar, etc.

     

    VB.NET 2005 - Acesso a dados no SQL Server via código

    http://www.macoratti.net/vbn5_adb.htm

    http://www.macoratti.net/vbn_stor.htm

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    Thursday, May 01, 2008 1:00 AM


  • Ai vai um codigo em c#:

    Code Snippet

         private void button1_Click(object sender, EventArgs e)
            {
                InsertRow(" Provider = Microsoft.Jet.Oledb.4.0;Data Source=C:/Documents and Settings/kassiano/Meus documentos/calculadora/bdusers.mdb; ", "insert into users(nome) values('" + textBox1.Text + "')");

            }

            public void InsertRow(string connectionString, string insertSQL)
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    // The insertSQL string contains a SQL statement that
                    // inserts a new row in the source table.
                    OleDbCommand command = new OleDbCommand(insertSQL);

                    // Set the Connection to the new OleDbConnection.
                    command.Connection = connection;

                    // Open the connection and execute the insert command.
                    try
                    {
                        connection.Open();
                        command.ExecuteNonQuery();
                    }
                    catch
                    {
                        MessageBox.Show("Erro ao salvar na base de dados");// Console.WriteLine(ex.Message);
                    }
                    // The connection is automatically closed when the
                    // code exits the using block.
                }

            }



    nao esqueca de importar a classe system.data.oledb;

    Thursday, May 01, 2008 1:38 AM
  • Os exemplos em VB são muito bons, mais meu sistema está em C#, não consegui usar o código acima, por isso estou enviando os dados mais detalhados....Agradeço a ajuda

     

     

    ESSA É A MINHA CLASSE DE CONEXÃO COM O BD

    public class conexao

        {

            SqlConnectionStringBuilder sConn;

     

           public SqlConnectionStringBuilder SConn

           {

             get { return sConn; }

             set { sConn = value; }

            }

     

            public void Conecta()

            {

                SConn = new SqlConnectionStringBuilder();

                sConn.DataSource = "NILTON";

                sConn.InitialCatalog = "acesso";

                sConn.UserID = "strcon";

                sConn.Password = "123";

                sConn.Pooling = false;

            }

        }

     

    AQUI SERÁ EXECUTADA A AÇÃO DE GRAVAR OS DADOS NO BD

    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 strconexao

    {

       public partial class Form1 : Form

        {

            conexao Cone;

            public Form1()

            {

                InitializeComponent();

                Cone = new conexao();

            }

            private void btnGravar_Click(object sender, EventArgs e)

            {

                Cone.Conecta();

                SqlConnection con = new SqlConnection();

                con.ConnectionString = Cone.SConn.ToString();

               

                ???????? O QUE EU FAÇO AQUI ????????

            }

                

         }

      }

     

    DADOS DO FORM

    lblID                      textbox1

    lblNOME              textbox2

    lblTELEFONE        textbox3

                  btn GRAVAR

     

    Thursday, May 01, 2008 9:44 PM
  • Olá Garmadoc,

     

    Aqui tem um exemplo simples de como vc pode fazer um CRUD tem exemplo em C#,VB para WIN e WEB

     

    http://danielfonsecacastro.spaces.live.com/blog/cns!707C31973BDE58D2!215.entry

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    Friday, May 02, 2008 1:34 PM
  • Daniel,

     

    Ao abrir o arquivo, aparece o seguinte erro:

     

    The selected file is a solution file, but was  created by a newer version of this application and canot be opened.

     

    Eu uso SQLServer 2005 Standart e VS 2005 Standart tbm.

    Acho que deveria abrir, mas nada....

    caso tenh outro jeito.....

    Friday, May 02, 2008 2:07 PM
  • Olá,

     

    Então eu liste os programas que utilizei la no post !!

    Mais de qualquer forma você pode abrir os arquivos .cs para ver como funciona ou então criar um projeto no VS 2005 win ou web adicionar os arquivos para esse projeto.

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

     

    Friday, May 02, 2008 2:14 PM
  • Show Daniel,

    Testei tudo e funcionou perfeitamente...

    Só uma coisa, o campo ID é auto-incremento, quando eu dou um Insert ele não insere o número automaticamente, gera um erro, que somente tirando este campo ele funciona, tem como ao dar um Insert ele somente aparecer número do ID automático, deixo este texbox com a propriedade Enabled = False, é somente pra visualizar o ID no momento em que gravo no banco...

    Agradeço a atenção.

     

     

     

    Friday, May 02, 2008 5:56 PM
  • Olá Gormadoc ,

     

    É possivel sim pegar o valor gerado mais ai você tem que utilizar Store Procedure para isso e declarar uma variavel de retorno. Aqui tem um exemplo

     

    http://www.macoratti.net/07/06/vbn5_vci.htm

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

    Friday, May 02, 2008 6:34 PM
  • Olá Gormadoc,

     

    Você pode fazer assim eu usei nesse exemplo o banco de dados northwind a tabela suppliers que tem a coluna supplierId com identity habilitado :

     

    Store Procedure

    Code Snippet

    CREATE PROCEDURE InsertSuppliers(

          @CompanyName      AS NVARCHAR(40),

          @ContactName      AS NVARCHAR(30),

          @ContactTitle     AS NVARCHAR(30),

          @SupplierID       AS INT OUTPUT

    )

    AS

    INSERT INTO Suppliers(

          CompanyName,

          ContactName,

          ContactTitle

    )VALUES(

          @CompanyName,

          @ContactName,

          @ContactTitle

    )

     

    -- Seta valor para o parâmetro de saída

    SET @SupplierID   = SCOPE_IDENTITY()

     

     

    Código Para usar o Procedure

     

    Code Snippet

    SqlCommand sqlCommand = null;

    Suppliers suppliers = null;

    SqlParameter sqlParameter = null;

     

    try

    {

        //Cria  objeto Suppliers

        suppliers = new Suppliers() { CompanyName = "Nome Companhia", ContactName = "Maria", ContactTitle = "Presidente" };

     

        //Configura SqlCommand

        sqlCommand = new SqlCommand("InsertSuppliers", new SqlConnection(@"Data Source=DFC\SQLEXPRESS;Initial Catalog =Northwind;Integrated Security=true;"));

        sqlCommand.CommandType = CommandType.StoredProcedure;

        sqlCommand.Connection.Open();

     

        sqlCommand.Parameters.Add("@CompanyName", SqlDbType.NVarChar,40,"CompanyName").Value=suppliers.CompanyName;

        sqlCommand.Parameters.Add("@ContactName", SqlDbType.NVarChar,30,"ContactName").Value=suppliers.ContactName;

        sqlCommand.Parameters.Add("@ContactTitle", SqlDbType.NVarChar,30,"ContactTitle").Value=suppliers.ContactTitle;

       

        //Configura o parâmetro de retorno(Output)

        sqlParameter = new SqlParameter("@SupplierID", SqlDbType.Int,0,"SupplierID");

       

        //Seta a direção do parâmetro

        sqlParameter.Direction = ParameterDirection.Output;

     

        //Adiciona parâmetro de retorno(Output)

        sqlCommand.Parameters.Add(sqlParameter);

     

        //Insere dados

        sqlCommand.ExecuteNonQuery();

     

        //Carrega id do novo registro

        suppliers.SupplierID = Convert.ToInt32(sqlParameter.Value);

    }

    catch (Exception)

    {

        throw;

    }

     

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    Monday, May 05, 2008 11:17 AM

All replies

  • Gormadoc,

     

    Neste link vc vai encontrar como Conectar, Incluir, Consultar, etc.

     

    VB.NET 2005 - Acesso a dados no SQL Server via código

    http://www.macoratti.net/vbn5_adb.htm

    http://www.macoratti.net/vbn_stor.htm

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    Thursday, May 01, 2008 1:00 AM


  • Ai vai um codigo em c#:

    Code Snippet

         private void button1_Click(object sender, EventArgs e)
            {
                InsertRow(" Provider = Microsoft.Jet.Oledb.4.0;Data Source=C:/Documents and Settings/kassiano/Meus documentos/calculadora/bdusers.mdb; ", "insert into users(nome) values('" + textBox1.Text + "')");

            }

            public void InsertRow(string connectionString, string insertSQL)
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    // The insertSQL string contains a SQL statement that
                    // inserts a new row in the source table.
                    OleDbCommand command = new OleDbCommand(insertSQL);

                    // Set the Connection to the new OleDbConnection.
                    command.Connection = connection;

                    // Open the connection and execute the insert command.
                    try
                    {
                        connection.Open();
                        command.ExecuteNonQuery();
                    }
                    catch
                    {
                        MessageBox.Show("Erro ao salvar na base de dados");// Console.WriteLine(ex.Message);
                    }
                    // The connection is automatically closed when the
                    // code exits the using block.
                }

            }



    nao esqueca de importar a classe system.data.oledb;

    Thursday, May 01, 2008 1:38 AM
  • Os exemplos em VB são muito bons, mais meu sistema está em C#, não consegui usar o código acima, por isso estou enviando os dados mais detalhados....Agradeço a ajuda

     

     

    ESSA É A MINHA CLASSE DE CONEXÃO COM O BD

    public class conexao

        {

            SqlConnectionStringBuilder sConn;

     

           public SqlConnectionStringBuilder SConn

           {

             get { return sConn; }

             set { sConn = value; }

            }

     

            public void Conecta()

            {

                SConn = new SqlConnectionStringBuilder();

                sConn.DataSource = "NILTON";

                sConn.InitialCatalog = "acesso";

                sConn.UserID = "strcon";

                sConn.Password = "123";

                sConn.Pooling = false;

            }

        }

     

    AQUI SERÁ EXECUTADA A AÇÃO DE GRAVAR OS DADOS NO BD

    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 strconexao

    {

       public partial class Form1 : Form

        {

            conexao Cone;

            public Form1()

            {

                InitializeComponent();

                Cone = new conexao();

            }

            private void btnGravar_Click(object sender, EventArgs e)

            {

                Cone.Conecta();

                SqlConnection con = new SqlConnection();

                con.ConnectionString = Cone.SConn.ToString();

               

                ???????? O QUE EU FAÇO AQUI ????????

            }

                

         }

      }

     

    DADOS DO FORM

    lblID                      textbox1

    lblNOME              textbox2

    lblTELEFONE        textbox3

                  btn GRAVAR

     

    Thursday, May 01, 2008 9:44 PM
  • Olá Garmadoc,

     

    Aqui tem um exemplo simples de como vc pode fazer um CRUD tem exemplo em C#,VB para WIN e WEB

     

    http://danielfonsecacastro.spaces.live.com/blog/cns!707C31973BDE58D2!215.entry

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    Friday, May 02, 2008 1:34 PM
  • Daniel,

     

    Ao abrir o arquivo, aparece o seguinte erro:

     

    The selected file is a solution file, but was  created by a newer version of this application and canot be opened.

     

    Eu uso SQLServer 2005 Standart e VS 2005 Standart tbm.

    Acho que deveria abrir, mas nada....

    caso tenh outro jeito.....

    Friday, May 02, 2008 2:07 PM
  • Olá,

     

    Então eu liste os programas que utilizei la no post !!

    Mais de qualquer forma você pode abrir os arquivos .cs para ver como funciona ou então criar um projeto no VS 2005 win ou web adicionar os arquivos para esse projeto.

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

     

    Friday, May 02, 2008 2:14 PM
  • Show Daniel,

    Testei tudo e funcionou perfeitamente...

    Só uma coisa, o campo ID é auto-incremento, quando eu dou um Insert ele não insere o número automaticamente, gera um erro, que somente tirando este campo ele funciona, tem como ao dar um Insert ele somente aparecer número do ID automático, deixo este texbox com a propriedade Enabled = False, é somente pra visualizar o ID no momento em que gravo no banco...

    Agradeço a atenção.

     

     

     

    Friday, May 02, 2008 5:56 PM
  • Olá Gormadoc ,

     

    É possivel sim pegar o valor gerado mais ai você tem que utilizar Store Procedure para isso e declarar uma variavel de retorno. Aqui tem um exemplo

     

    http://www.macoratti.net/07/06/vbn5_vci.htm

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

     

    Friday, May 02, 2008 6:34 PM
  • Nossa...é um pouco complicado...

    vamos lá...

     

    Fiz a procedure, funcionou, foi inserido um novo campo...(se chama RetornaID)

    Só não consegui codificar o exemplo que me passou, que já implantei em todo o sistema...

     

    CustomersDAL.cs (exemplo que me passou)

     

    Ele passa o script em uma tela visual (DataBase Explorer)e cria uma função só pra isso...

     

    Tem alguma maneira de inserir na mesma classe, como no exemplo da CustomersDAL.cs

    Algo como:

     

    sql = new StringBuilder();

    sql.Append("INSERT INTO Customers(RetornaID, CompanyName,ContactName,...)");

    sql.Append("VALUES(@CustomerID, @CompanyName, @ContactName,...)");

     

    Tentei algo assim mais não funcionou....

     

    Agradeço a ajuda e a paciência

     

    Friday, May 02, 2008 7:49 PM
  • Olá Gormadoc,

     

    Você pode fazer assim eu usei nesse exemplo o banco de dados northwind a tabela suppliers que tem a coluna supplierId com identity habilitado :

     

    Store Procedure

    Code Snippet

    CREATE PROCEDURE InsertSuppliers(

          @CompanyName      AS NVARCHAR(40),

          @ContactName      AS NVARCHAR(30),

          @ContactTitle     AS NVARCHAR(30),

          @SupplierID       AS INT OUTPUT

    )

    AS

    INSERT INTO Suppliers(

          CompanyName,

          ContactName,

          ContactTitle

    )VALUES(

          @CompanyName,

          @ContactName,

          @ContactTitle

    )

     

    -- Seta valor para o parâmetro de saída

    SET @SupplierID   = SCOPE_IDENTITY()

     

     

    Código Para usar o Procedure

     

    Code Snippet

    SqlCommand sqlCommand = null;

    Suppliers suppliers = null;

    SqlParameter sqlParameter = null;

     

    try

    {

        //Cria  objeto Suppliers

        suppliers = new Suppliers() { CompanyName = "Nome Companhia", ContactName = "Maria", ContactTitle = "Presidente" };

     

        //Configura SqlCommand

        sqlCommand = new SqlCommand("InsertSuppliers", new SqlConnection(@"Data Source=DFC\SQLEXPRESS;Initial Catalog =Northwind;Integrated Security=true;"));

        sqlCommand.CommandType = CommandType.StoredProcedure;

        sqlCommand.Connection.Open();

     

        sqlCommand.Parameters.Add("@CompanyName", SqlDbType.NVarChar,40,"CompanyName").Value=suppliers.CompanyName;

        sqlCommand.Parameters.Add("@ContactName", SqlDbType.NVarChar,30,"ContactName").Value=suppliers.ContactName;

        sqlCommand.Parameters.Add("@ContactTitle", SqlDbType.NVarChar,30,"ContactTitle").Value=suppliers.ContactTitle;

       

        //Configura o parâmetro de retorno(Output)

        sqlParameter = new SqlParameter("@SupplierID", SqlDbType.Int,0,"SupplierID");

       

        //Seta a direção do parâmetro

        sqlParameter.Direction = ParameterDirection.Output;

     

        //Adiciona parâmetro de retorno(Output)

        sqlCommand.Parameters.Add(sqlParameter);

     

        //Insere dados

        sqlCommand.ExecuteNonQuery();

     

        //Carrega id do novo registro

        suppliers.SupplierID = Convert.ToInt32(sqlParameter.Value);

    }

    catch (Exception)

    {

        throw;

    }

     

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    Monday, May 05, 2008 11:17 AM
  •   Ola amigos,
    Eu sou novo neste ramo, por isso preciso da ajuda de vocês.

    Estou desenvolvendo um projeto em que o usuário poderá entrar no web site e acessar a área administrativa e efetuar modificações de textos em determinados locais do site.

    Preciso de 3 coisas:

    1º preciso classificar o usuário entre: administrador, Profissionais e usuários.

    Dentro deste padrão necessito as seguintes funções:

    Administrador:
    -Adiciona novos usuários
    -Exclui usuários
    -Modifica matérias postadas pelos profissionais (edição e remoção)
    -Acesso completo ao site
    -Altera senha e dados de cadastro de todos s cadastrados

    Profissionais:
    -Cadastram toda semana matérias novas
    -Possam alterar senhas e dados de seu cadastro como um perfil

    Usuários:
    -Acesso a matérias restritas
    -Não podem acessar nem editar nenhum material.

    Com essas definições preciso:
    Criar o formulário para cadastro(já posssuo)
    Criar uma base para o cadastro(ja possuo)
    Criar outra base somente com login e senha relacionado com cadastro, que o administrador criar o usuário ele seleciona nova senha, e nova função, e automaticamente o sistema gera as permissões e negações.(não sei como fazer, tenho a base com login e senha mas não sei gravar o cadastro e ele salvar o login e senha em um tabela separada, relacionar as duas.)
    Não consigo gravar os dados de nenhum formulário no banco de dados tanto acess quanto sql 2005.

    OBS: Estou usando C# para programar e ele possui erro.

    Por favor caso alguem puder me ajudar a sair deste problema agradeço, e o que puder ajudar neste fórum farei com certeza.

    Grato
    Paulo Beber
    Paulo beber
    Thursday, February 05, 2009 6:06 PM
  • Cara, eu faço isso muito de maneira muito mais fácil (pena que nem todos os casos dá pra fazer desse jeito, ai tem que ser na "mão" mesmo)

    caso esteja utilizando o bading source, vc pode fazer da seguinte maneira

    badingsource1.EndEdit();
    this.seuTableAdpater.Update(this.seuDataSet.SuaTabela);


    mas para isso seu dataset terá que ser configurado para os métodos de atualizar, inserir e excluir dados...

    Abrçs
    Liniker Fortunato, Analistas de sistemas
    Thursday, February 05, 2009 6:45 PM
  • Ola amigos, obrigado pela resposta, mas tenho uma dúvida:

    Duas na verdade:

    1º o que é bading source, nunca ouvi falar disso
    2º eu tentei usar o data set, data list, details view, mas quando clico em editar altero os dados e mando salvar ele da erro, não salva, como esses controles seria muito mais fácil, mas ele da erro para salvar ou dar update.
    Como eu configuro corretamente para Insert Into e Update com o data list ou details view?

    aguardo um contato

    grato
    Paulo Beber
    Paulo beber
    Friday, February 06, 2009 12:25 PM
  • Blz esse código ficou legal, mas eu gostaria de usar ele para um DB SQL, como faço para fazer a connexão com o banco de dados....?
    Tuesday, January 18, 2011 3:32 PM