Xml dosyası veritabanına parametreli olarak c# veya vb.net ile store procedure kullanarak gönderme
Xml okuma
xml tabloya yazdırma
[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