Usuário com melhor resposta
Conexão com Banco de Dados - Atribuição dos valores

Pergunta
-
Boa tarde á todos, tenho uma dúvida que não estou conseguindo achar páginas que me ajudem com clareza! ;(
Bom,
Estou fazendo uma aplicação (Windows Form) (C#)
Tenho já pronto um formulário que recebe os dados da pessoa para a criação de um currículo,
existe o botão limpar(responsável por resetar todos os textBox, comboBox, e afins.)
também existe o botão sair(responsável por sair da aplicação ;] )
e por fim existe o botão CADASTRAR(responsável por fazer a validação e também pegar todos os dados depois de validados e adicionar ao banco de dados.
Como os códigos para validação já estão todos prontos, só falta mesmo o envio dos dados para o banco de dados. E é ai que entra minha dúvida.
- Como faço para que isso aconteça ?
- Quais são os códigos que tenho que usar para conseguir mandar ao BD? (ACCESS)
- Já fiz a conexão e no data source aparece todos os campos do jeitinho que criei no ACCESS, mais acontece que não sei mais o que fazer depois dai
Meus Agradecimentos.
Respostas
-
Basicamente seria isso aqui:
using System; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string connetionString = null; OleDbConnection cnn ; OleDbCommand cmd ; string sql = null; connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SEU_ARQUIVO_ACCESS;" sql = "SEU SCRIPT DE INSERT AQUI" cnn = new OleDbConnection(connetionString); try { cnn.Open(); MessageBox.Show("Conexao Aberta "); cmd = new OleDbCommand(sql, cnn); cmd.ExecuteNonQuery(); cmd.Dispose(); cnn.Close(); MessageBox.Show (" Comando executado!!"); } catch (Exception ex) { MessageBox.Show("Erro ao abrir a conexao ! " + ex.ToString()); } } } }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta BrunoCastro quarta-feira, 20 de maio de 2015 18:51
Todas as Respostas
-
Basicamente seria isso aqui:
using System; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string connetionString = null; OleDbConnection cnn ; OleDbCommand cmd ; string sql = null; connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SEU_ARQUIVO_ACCESS;" sql = "SEU SCRIPT DE INSERT AQUI" cnn = new OleDbConnection(connetionString); try { cnn.Open(); MessageBox.Show("Conexao Aberta "); cmd = new OleDbCommand(sql, cnn); cmd.ExecuteNonQuery(); cmd.Dispose(); cnn.Close(); MessageBox.Show (" Comando executado!!"); } catch (Exception ex) { MessageBox.Show("Erro ao abrir a conexao ! " + ex.ToString()); } } } }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta BrunoCastro quarta-feira, 20 de maio de 2015 18:51
-
-
-
Foi exatamente o que te passei, vou explicar em miudos:
1 - Montar a query que fara o insert no banco de dados com os dados das sua textBox;
2 - Passar os dados para essa query concatenando seus valores:
Ex:
"INSERT INTO (SEU_CAMPO1,SEU_CAMPO1...SEU_CAMPON)VALUES("+primeiraTextBox.Text+","+segundaTextBox.Text+","+NTextBox.Text+");"
3 - Vai fazer o ExecuteNonQuery.
No exemplo que te passei ja esta praticamente pronto, so coloca o script para o insert e os seus campos de acordo com o exemplo que te passei agoraA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
-
-
Mr., Muito obrigado ! você está me ajudando muito ! hehe, mais eu ainda tenho problemas ;[
Quando clico no botão cadastrar, ele tenta fazer a conexão conforme você me ensinou, mais da um erro dizendo que o formato do banco de dados não é reconhecido. Como posso resolver isso ?
meu BD está no formato .accdb
-
rsrsr não entendi ou entendi errado, você não tem nada funcionando (consulta e nem conexão com o banco)?
Para que funcione você terá que ter o ACE 4 DRIVER e sua string de conexão ficará assim:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=SEUBANCO.accdb;Jet OLEDB:Database"
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
Mr., meu caro. kk
passei também pelo ultimo erro.
Mas parece que ainda estou encontrando erros a seguir. Posso estar fazendo alguma coisa errada, e não estou enxergando isso.
Vou colocar um pedaço do meu código de forma resumida.
Mas antes de tudo, gostaria de agradecer imensamente sua ajuda, ela está sendo de grande valor.
string connetionString = null;
OleDbConnection conexao ;
OleDbCommand comandos ;
string sql = null;
connetionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=jct-bancodedados.accdb;Jet OLEDB:Database";
sql = "INSERT INTO(NOME,SOBRENOME)VALUES(" + txtNome.Text + "," +txtSobrenome+ ")";
conexao = new OleDbConnection(connetionString);
try
{
conexao.Open();
MessageBox.Show("Conexao Aberta ");
comandos = new OleDbCommand(sql, conexao);
comandos.ExecuteNonQuery();
comandos.Dispose();
conexao.Close();
MessageBox.Show ("Comando executado!!");
}
catch (Exception ex)
{
MessageBox.Show("Erro ao abrir a conexao ! " + ex.ToString());
}Ao compilar, este erro aparece:
O formato da cadeia de inicialização não está de acordo com a especificação iniciada no índice 69.
-
-
-
Você instalou o ACER DRIVER que passei?, modifica o nome desse arquivo troca o "-" por "_" underline
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 20 de maio de 2015 16:30
-
-
Se tudo estiver realmente correto não era para apresentar erro.
1 - Verifica o caminho para o banco de dados (você colocou como se o mesmo estivesse na mesma pasta do executável);
2 - Tente essa string de conexão:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=jct-bancodedados.accdb;Persist Security Info=False;"
3 - Muda o tipo de projeto (Menu->Project->Properties) muda seu TargetBuild para de "ANY" para "X86".
Teste novamente
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
BOM ! fiz os 3 passos que você me recomendou, e finalmente o Mssagebox.show("Conexão Aberta") Apareceu !
Mais um novo erro apareceu.
Erro ao abrir conexao ! System.Data.OleDb.OleDbexcepton (0x80040E14): Erro de sintaxe na instrução INSTER INTO.
Mr, tenho uma dúvida, quando conseguirmos fazer está aplicação rodar, ela ficará limitada apenas para computadores X86 ?
-
O erro de INSERT é alguma coisa que esta passando errada, nessa parte pressiona a TECLA F9 (BREAKPOINT)
e veja o valor dela colocando o mouse sobre o "sql"
comandos = new OleDbCommand(sql, conexao);
E quanto ao segundo questionamento, todos os programas geralmente em X86 funcionam para X64 mais o contrario não funciona.
OBS: O comando INSERT quando as variaveis forem do tipo Varchar( string) devem ficar entre ASPAS SIMPES:
sql = "INSERT INTO(NOME,SOBRENOME)VALUES('" + txtNome.Text + "','" +txtSobrenome+ "')";
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 20 de maio de 2015 17:48
-
bom, quando chega nessa parte o valor da sql é exatamente os .Text
quando passo o mouse por cima:
"INSERT INTO(NOME,SOBRENOME)VALUES(BRUNO,CASTRO)"
Então continuei debugando..
comandos.ExecuteNonQuery();
comandos.Dispose();
conexao.Close();
MessageBox.Show ("Comando executado!!");
}
catch (Exception ex)
{
MessageBox.Show("Erro ao abrir a conexao!" + ex.ToString());
}e quando cheguei no .ExecuteNonQuery();
ele vai direto pro catch.
-
Exatamente o que pensei esta errado, falta as aspas simples, substitua por esse daqui o seu:
sql = "INSERT INTO(NOME,SOBRENOME)VALUES('" + txtNome.Text + "','" +txtSobrenome+ "')";
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
Fiz a troca ! mas o erro persistiu,
coloquei novamente o BREAKPOINT e o valor foi o seguinte:
"INSERT INTO(nome,sobrenome)VALUES('BRUNO','System.Windows.Forms.TextBox, Text: CASTRO')"
---------------------------------------------------------------------------------
Na verdade estava faltando o .Text do sobrenome, fiz a correção mas mesmo assim o erro persiste
e o valor da sql agora é:
"INSERT INTO(NOME,SOBRENOME)VALUES('BRUNO','SANTOS')"
- Editado BrunoCastro quarta-feira, 20 de maio de 2015 18:20
-
-
-
Ta faltando o nome da tabela no INSERT INTO, que corresponde ao seu banco
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Editado Mr. GMSOFT quarta-feira, 20 de maio de 2015 18:32
-
-