Usuário com melhor resposta
Multiplo insert usando data set

Pergunta
-
Seguinte pessoal, estou usando o banco de dados sqlserver ce para fazer um sistem de gerenciamento de prova... estou usando o c#
criei meu banco direitinho, fiz os relacionamentos, e estou fazendo tudo (inserts) por meio de data set, ai chego numa parte do meu formulario em que a pessoa pode inserir uma pergunta com ate 5 alternativas ...
na minha tabela Perguntas eu tenho as Alternativas como um atributo multi valorado, ou seja eu tenho uma tabela soh pra alternativa devidamente relacionada.
Meu problema é que estou numa parte onde meu formulario segue desse jeito: 1 textbox pra digitar pergunta, e 5 texts pra digitar as alternativas, com a "pergunta" nao tenho problema, porém como as alternativas sao 5, e estou usando o data set, nao consigo fazer com 5 inserts de uma soh vez, pois qdo clico no "submit" da ____(asvezes soh insere o primeiro campo).
Preciso de alguma solução para poder fazer 5 inserts de uma soh vez
Obrigado!
Respostas
-
Tu pode percorrer teus controles e montar uma instrução SQL com vários inserts, um depois do outro, e executar a query, com um command normal, ou usar o dataadpter. Dá uma olhada neste artigo do Macoratti, acho q vai t ajudar:
http://www.macoratti.net/vbn_dat1.htm
Documentação do MSDN:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.insertcommand.aspx
Code project:
http://www.codeproject.com/KB/database/relationaladonet.aspx
Gabriel Bauermann- Marcado como Resposta Fabio R. Luz sábado, 14 de agosto de 2010 03:27
-
Olá!
Eu fiz um exemplo usando as classes do SqlClient, no seu cenário coloque use as classes do SqlCe.
abaixo a estrutura da tabela usada:create table tb_teste ( id_teste int, mn_teste varchar(10) )
O código abaixo cria um datatable com a estrutura da tabela, inseri alguns registros e atualiza no banco em lote
private void Insert() { DataTable table = new DataTable(); table.Columns.Add("id_teste"); table.Columns.Add("mn_teste"); DataRow row1 = table.NewRow(); row1[0] = 1; row1[1] = "Anderson"; DataRow row2 = table.NewRow(); row2[0] = 1; row2[1] = "Melo"; table.Rows.Add(row1); table.Rows.Add(row2); using (SqlConnection connection = new SqlConnection("CONNECTION")) { SqlDataAdapter adapter = new SqlDataAdapter("select * from tb_teste", connection); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter); adapter.InsertCommand = cmdBuilder.GetInsertCommand(); adapter.Update(table); } }
Espero ter ajudado
Anderson
- Marcado como Resposta Fabio R. Luz sábado, 14 de agosto de 2010 03:27
Todas as Respostas
-
-
Entao, não estou usando data adapter, e nao sei como funciona, eu adicionei o componente sqlCeDataAdapter mas nao sei usa-lo.
Reparei que eu posso colocar meu propio InsertCommand via SQL, e isso vai ser bem util pra mim...
Agora quanto ao meu codigo, esse formulario nao tem quase nada então eh desnecessario posta-lo, mas vou dar uma resumida no que eu preciso:
Imagina que eu tenho uma tabela MENSAGENS, com um identificador autoincrement e um campo pra mensagem varchar
Eu quero ir no meu data set e arrastar varios "mensagens" (como textbox) para o formulario e qdo eu der o submit ele insira todos de uma vez!
NOTA: eu deletei aquela barra do topo, e mandei o metodo AddNew no onload do formulario, criei um button que colei o codigo do "disquetinho".
Obrigado!
-
Tu pode percorrer teus controles e montar uma instrução SQL com vários inserts, um depois do outro, e executar a query, com um command normal, ou usar o dataadpter. Dá uma olhada neste artigo do Macoratti, acho q vai t ajudar:
http://www.macoratti.net/vbn_dat1.htm
Documentação do MSDN:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.insertcommand.aspx
Code project:
http://www.codeproject.com/KB/database/relationaladonet.aspx
Gabriel Bauermann- Marcado como Resposta Fabio R. Luz sábado, 14 de agosto de 2010 03:27
-
Olá!
Eu fiz um exemplo usando as classes do SqlClient, no seu cenário coloque use as classes do SqlCe.
abaixo a estrutura da tabela usada:create table tb_teste ( id_teste int, mn_teste varchar(10) )
O código abaixo cria um datatable com a estrutura da tabela, inseri alguns registros e atualiza no banco em lote
private void Insert() { DataTable table = new DataTable(); table.Columns.Add("id_teste"); table.Columns.Add("mn_teste"); DataRow row1 = table.NewRow(); row1[0] = 1; row1[1] = "Anderson"; DataRow row2 = table.NewRow(); row2[0] = 1; row2[1] = "Melo"; table.Rows.Add(row1); table.Rows.Add(row2); using (SqlConnection connection = new SqlConnection("CONNECTION")) { SqlDataAdapter adapter = new SqlDataAdapter("select * from tb_teste", connection); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter); adapter.InsertCommand = cmdBuilder.GetInsertCommand(); adapter.Update(table); } }
Espero ter ajudado
Anderson
- Marcado como Resposta Fabio R. Luz sábado, 14 de agosto de 2010 03:27
-