28 Mayıs 2016 Cumartesi

Xml okuma tabloya yazdırma store procedure ile

Xml dosyası veritabanına parametreli olarak c# veya vb.net ile store procedure kullanarak gönderme


Xml okuma


xml tabloya yazdırma


Açıklama:

Bu makale sqlogren.com tarafından yayınlanıktadır.Orjinal içerik www.sqlogren.com adresinde yer almaktadır.


Bu noktadan sonra çalışacağımız xml dosyanın adı sample.xml olacaktır.Sizde kendi xml dosyasınızı oluşturmak için aşağıdaki kodların tümünde değişiklik yapmanız gerekecektir.Aşağıdaki kodları tasarım ekranından değiştiriniz.

[php]

<?xml version="1.0" encoding="utf-8" ?>

<users>

<user>

<FirstName>Suresh</FirstName>

<LastName>Dasari</LastName>

<UserName>SureshDasari</UserName>

<Job>Team Leader</Job>

</user>

<user>

<FirstName>Mahesh</FirstName>

<LastName>Dasari</LastName>

<UserName>MaheshDasari</UserName>

<Job>Software Developer</Job>

</user>

<user>

<FirstName>Madhav</FirstName>

<LastName>Yemineni</LastName>

<UserName>MadhavYemineni</UserName>

<Job>Business Analyst</Job>

</user>

</users>


[/php]

İlk defa oluşturacağımız xml için fiziksel bir dosya oluşturmamız gerekecek.Bunu Solution explorer içerisine girerek eklemek istediğiniz yere sağ tuş tıklayarak add new item yeni item ekle diyerek sample.xml dosyasını oluşturmalısınız.


[php]

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Send xml file as a parameter to SQL stored procedure in asp.net</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Button ID="btnSend" Text="Send XML to Database" runat="server" onclick="btnSend_Click" /><br /><br />

<b>Inserted Records Details</b> :

<asp:GridView ID="gvDetails" runat="server">

<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />

</asp:GridView>

</div>

</form>

</body>

</html>


[/php]

Kod yazma codebehind bölümüne geldiğimizde ;


c# Kodu ile uzay kütüphanelerimize aşağıdaki kütüphanelerin mutlaka eklenilmiş olduğuna eğer eklenilmemişse sizin tarafınızdan eklenilmesi gerecektir.


[php]

using System;

using System.Data;

using System.Data.SqlClient;

using System.Xml;


[/php]

Şimdi kod penceresine aşağıdakileri yazalım.


[php]

protected void btnSend_Click(object sender, EventArgs e)


XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("Sample.xml"));

DataSet ds = new DataSet();

ds.ReadXml(xmlreader);

xmlreader.Close();

if (ds.Tables.Count != 0)


using (SqlConnection con = new SqlConnection("Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB"))


con.Open();

SqlCommand cmd = new SqlCommand("prc_readxmldata", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@XMLdata", SqlDbType.Xml).Value = ds.GetXml();

SqlDataAdapter da=new SqlDataAdapter(cmd);

DataSet ds1=new DataSet();

da.Fill(ds1);

gvDetails.DataSource = ds1;

gvDetails.DataBind();

con.Close();



[/php]

Vb.net kodları aşağıdaki gibi olmalı.


[php]

Imports System.Data

Imports System.Data.SqlClient

Imports System.Xml

Partial Class Default2

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)


End Sub

Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As EventArgs)

Dim xmlreader As New XmlTextReader(Server.MapPath("Sample.xml"))

Dim ds As New DataSet()

ds.ReadXml(xmlreader)

xmlreader.Close()

If ds.Tables.Count <> 0 Then

Using con As New SqlConnection("Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB")

con.Open()

Dim cmd As New SqlCommand("prc_readxmldata", con)

cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add("@XMLdata", SqlDbType.Xml).Value = ds.GetXml()

Dim da As New SqlDataAdapter(cmd)

Dim ds1 As New DataSet()

da.Fill(ds1)

gvDetails.DataSource = ds1

gvDetails.DataBind()

con.Close()

End Using

End If

End Sub

End Class


[/php]

Tüm bunları yapabilmek için bir adet store procedure ihtiyacımız olacak bunu oluşturmak için t-sql kodları aşağıdadır.Sql içerisinden bu kodları çalıştırarak store procedure ü oluşturabilirsiniz.


[php]

CREATE PROCEDURE prc_readxmldata

(

@XMLdata XML

)

AS

BEGIN

SELECT

t.value(‘(FirstName/text())[1]’,’nvarchar(120)’)AS FirstName ,

t.value(‘(LastName/text())[1]’,’nvarchar(120)’)AS LastName,

t.value(‘(UserName/text())[1]’,’nvarchar(120)’)AS UserName,

t.value(‘(Job/text())[1]’,’nvarchar(120)’)AS Job

FROM

@XMLdata.nodes(‘/users/user’)AS TempTable(t)

END

[/php]

Hepsi bu kadar kolay gelsin.



Xml okuma tabloya yazdırma store procedure ile

Hiç yorum yok:

Yorum Gönder