Usuário com melhor resposta
Inserir dados do XML no Banco de dados

Pergunta
-
Respostas
-
Olá Lucas,
Como está a estrutura do seu xml?
Veja um exemplo com mais campos:
Arquivo XML:
Code Snippet<?
xml version="1.0" encoding="utf-8" ?><
root><
<nome>Carlos</nome>
<endereco>Rua dos Crisantemos</endereco>
<email>carlosmonteiro@msn.com</email>
</item>
<item>
<nome>Erica</nome>
<endereco>Pça Rui Salles</endereco>
<email>erica@hotmail.com</email>
</item>
</root>
Leitura e inserção do arquivo:
Code SnippetSqlConnection conn = new SqlConnection("SUA_STRING_CONEXAO"); string arquivo = @"CAMINHO\SEUARQUIVO.xml";if (File.Exists(arquivo))
{
xmlDoc.Load(arquivo);
{
SqlCommand cmd = new SqlCommand();cmd.CommandType =
CommandType.Text;cmd.Connection = conn;
cmd.CommandText =
"INSERT INTO SUA_TABELA(CAMPO1, CAMPO2, CAMPO3) VALUES(@PARAMETRO1, @PARAMETRO2, @PARAMETRO3)";cmd.Parameters.AddWithValue("@PARAMETRO1", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[0].InnerText);
cmd.Parameters.AddWithValue("@PARAMETRO2", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[1].InnerText);
cmd.Parameters.AddWithValue("@PARAMETRO3", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[2].InnerText);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
Espero ter ajudado!
[]s
PS: Se o post foi útil, marque-o como resposta! ;-)
Todas as Respostas
-
Olá Lucas,
Você não deu muitos detalhes de como é a estrutura do seu xml, nem qual banco vc está usando, mas segue um exemplo de como ler um xml e importá-lo para uma tabela de um banco SQL Server:
Arquivo XML:
Code Snippet<?
xml version="1.0" encoding="utf-8" ?><
root><
<nome>Carlos</nome>
</item>
<item>
<nome>Erica</nome>
</item>
<item>
<nome>Joaquina</nome>
</item>
</root>
Leitura e inserção do arquivo:
Code SnippetSqlConnection conn = new SqlConnection("SUA_STRING_CONEXAO"); string arquivo = @"CAMINHO\SEUARQUIVO.xml";if (File.Exists(arquivo))
{
xmlDoc.Load(arquivo);
{
SqlCommand cmd = new SqlCommand();cmd.CommandType =
CommandType.Text;cmd.Connection = conn;
cmd.CommandText =
"INSERT INTO SUA_TABELA(SEU_CAMPO) VALUES(@NOME_DO_PARAMETRO)";cmd.Parameters.AddWithValue(
"@NOME_DO_PARAMETRO", xmlDoc.DocumentElement.ChildNodes[i].InnerText);conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
Dependendo da sua estrutura, talvez seja possível inserir os dados de formas mais interessantes, mas qualquer coisa, avisa ai.
Espero ter ajudado!
[]s
PS: Se o post foi útil, marque-o como resposta! ;-)
-
Olá Carlos.
Desde já agradeço a sua ajuda.
A estrutura do arquivo contem muitos dados e muitos campos de vários tipos(varchar, int, decimal). Se puder me passar um codigo inserindo vários campos de tipos diferentes(varchar, int, decimal),ficaria muito grato.
A minha questão é a seguinte:
Eu recebo os dados de um outro sistema num arquivo aspx não tenho acesso ao banco de dados deles.
A saida deste arquivo aspx é um xml.
Preciso ler este arquivo aspx com dados no formato xml e inserir no meu banco.É a integração entre os dois sistemas, só que
em vez de me enviar um arquivo xml, eles enviam um arquivo.aspx com dados xml. Preciso abrir esta url e ler este arquivo.aspx
Exemplo do tipo de arquivo que recebo para inserir no meu banco de dados
Na classe NomeClasse.cs
public DataSet GetAll()
{
SqlDataAdapter SqlCommand1 = new SqlDataAdapter("NOME_PROCEDURE", conn);
SqlCommand1.SelectCommand.CommandType = CommandType.StoredProcedure;DataSet dsLocalidade = new DataSet();
SqlCommand1.Fill(dsLocalidade);return dsLocalidade;
}no aspx , arquivo.aspx
NomeClasse nome_a = new NomeClasse();
dataset = nome_a.GetAll();Response.Expires = 0;
Response.ContentType = "text/xml";
Response.Write(dataset.GetXml());este é o tipo de arquivo que recebo, compreende?
Desde já agradeço a sua ajuda.
-
-
Boa Tarde,
Nesse caso há duas opções. Você pode simplesmente carregar o XML para um tipo de dados XML e a partir do SQL Server 2005 utilizar os métodos XML para transformar o XML em dados (Shredding). Outra opção é utilizar a classe XmlDataDocument. Essa classe herda de XmlDocument e possui um método DataSet. Esse método gera um DataSet que representa uma estrutura relacional e pode ser utilizado em conjunto com o SqlAdapter para enviar os dados para o banco.
Sobre os métodos XML, consulte o link abaixo:
SQL Server 2005 New Features: Os métodos XML - Parte 1
[ ]s,
Gustavo
-
-
-
-
-
-
Olá Lucas,
Como está a estrutura do seu xml?
Veja um exemplo com mais campos:
Arquivo XML:
Code Snippet<?
xml version="1.0" encoding="utf-8" ?><
root><
<nome>Carlos</nome>
<endereco>Rua dos Crisantemos</endereco>
<email>carlosmonteiro@msn.com</email>
</item>
<item>
<nome>Erica</nome>
<endereco>Pça Rui Salles</endereco>
<email>erica@hotmail.com</email>
</item>
</root>
Leitura e inserção do arquivo:
Code SnippetSqlConnection conn = new SqlConnection("SUA_STRING_CONEXAO"); string arquivo = @"CAMINHO\SEUARQUIVO.xml";if (File.Exists(arquivo))
{
xmlDoc.Load(arquivo);
{
SqlCommand cmd = new SqlCommand();cmd.CommandType =
CommandType.Text;cmd.Connection = conn;
cmd.CommandText =
"INSERT INTO SUA_TABELA(CAMPO1, CAMPO2, CAMPO3) VALUES(@PARAMETRO1, @PARAMETRO2, @PARAMETRO3)";cmd.Parameters.AddWithValue("@PARAMETRO1", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[0].InnerText);
cmd.Parameters.AddWithValue("@PARAMETRO2", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[1].InnerText);
cmd.Parameters.AddWithValue("@PARAMETRO3", xmlDoc.DocumentElement.ChildNodes[i].ChildNodes[2].InnerText);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
Espero ter ajudado!
[]s
PS: Se o post foi útil, marque-o como resposta! ;-)
-