Friday 7 October 2016

ADO.NET பகுதி-2




சென்ற கட்டுரையில் SqlDataReader பற்றிப் பார்த்தோம். SqlDataReader என்பது டேட்டாவை retrieve செய்ய உதவும் class ஆகும்.ஆனால் இது connection oriented ஆகும். Forward முறையிலேயே டேட்டாவை பெற முடியும்.
SqlDataAdapter மற்றும் DataSet ஆகிய இரண்டும் கலவையில் நாம் டேட்டா செர்வெரிடம் தொடரவுர்ந்த வேலையிலும் டேட்டாவை பெறலாம்.
SqlCommand  க்ளாஸிற்கு இரண்டு தகவல்கள் அனுப்புவோம்.
1.கமாண்ட் –செர்வருக்கு நாம் அனுப்ப விரும்பும் sql statement
2.கனக்சன்-எந்த டேட்டா  பேஸ் உடன் நாம் தொடர்பு கொள்ள விரும்புகிறோம்
போன்றவற்றை அனுப்புவோம்.
அதே முறையில் SqlDataAdapter க்ளாஸிற்கு இரண்டு தகவல்கள் அனுப்புவோம்.
1.கமாண்ட் –செர்வருக்கு நாம் அனுப்ப விரும்பும் sql statement
2.கனக்சன்-எந்த டேட்டா  பேஸ் உடன் நாம் தொடர்பு கொள்ள விரும்புகிறோம்
முதலில் web.confiq ஃபைலில் DB என்கின்ற connection string உருவாக்குவோம்
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <connectionStrings>
    <add name ="DB"
        connectionString =@"data source=MUTHU-PC\SQLEXPRESS;database=student;integrated security=SSPI"
         providerName="System.Data.sqlClient"/>
  </connectionStrings>

</configuration>

முதலில் நம் பிராஜெக்டில் GridView ஒன்று சேர்த்து கொள்வோம்.
Auto format க்ளிக் செய்து brown sugar என்பதை தெரிவு செய்து கொள்வோம்.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace WebApplication4
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
          String cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;

            using(SqlConnection con = new SqlConnection(cs))
            {
              
                SqlDataAdapter da=new SqlDataAdapter("select * from mark",con);

                DataSet ds=new DataSet();
                da.Fill(ds);

                GridView1.DataSource=ds;
                GridView1.DataBind ( );

            }
        }
    }
}
இதில் கனக்சன் உருவாக்கிய பிறகு SqlDataAdapter க்ளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கும் பொது sql command,,connection ஆகியவற்றை அனுப்புகின்றோம்.

அடுத்தது SqlDataAdapter  ஆனதை உபயோகித்து sql கட்டளையை இயக்கி டேட்டா செட் ஆப்ஜெக்ட் ஆன ds என்பதை நிரப்புகின்றோம்.  இப்போது கனக்சன் ஆனது தானாகவே ஒபன் ஆகும். டேட்டா செட்டை நிரப்பிய பிறகு தானாகவே மூடிக் கொள்ளூம்.
பின்னர் GridView1-ன் DataSource ஆக ds என்பதை தெரிவிக்கின்றோம்.
இப்போது இதன் வெளீயாடாக பின் வரும் படி வரும்..டேட்டா செட்டின் சிறப்பம்சமாது இது டேட்டா செர்வெரிடம் கனக்சன் இல்லாத நிலையிலும் டேட்டாபேஸ்,டேபிள்,வியூ போன்றவற்றை சேமித்து வைத்திருக்கும்.


இதில் sql கட்டளைக்கு பதில் stored procedure பயன்படுத்தலாம்.

முதலில் sql server ms-ல் ஒரு ஸ்டோர்டு ப்ரொசிஜர் உருவாகுவோம்.

create procedure spGetMarks
as
Begin

select * from mark ;

End

இதை இயக்கிய பிறகு நிரல் வரிகளில் பின் வரும் மாற்றத்தை ஏற்படுத்த வேண்டும்.

  protected void Page_Load(object sender, EventArgs e)
        {
          String cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;

            using(SqlConnection con = new SqlConnection(cs))
            {

                SqlDataAdapter da = new SqlDataAdapter("spGetMarks", con);

                da.SelectCommand.CommandType = CommandType.StoredProcedure;


                DataSet ds=new DataSet();
                da.Fill(ds);

                GridView1.DataSource=ds;
                GridView1.DataBind ();

            }
        }
இப்போதும் அதே வெளியீடு கிடைக்கும்.
இப்போது stored procedure-க்கு பராமீட்டர் அனுப்புவோம்.அதற்கேற்றார் போல்அதை மாற்றி அமைப்போம்.

. create procedure spGetMarksBYsno
@sno int
as
Begin

select * from mark where sno=@sno;


End


 இப்போது நம் வெப் பயன் பாட்டின் உருவாக்கத்தை பின் வருமாரு மாற்றி அமைப்போம்.
இப்போது புதிதாக ஒரு டெக்ஸ்ட் பாக்ஸும் ஒரு பட்டன் ஒன்றும் புதிதாக சேர்த்துள்ளோம்.


இப்போது நாம் textbox-ல் என்ன student no கொடுக்கின்றோமோ அதன் வெளியீடு மட்டும் கிடைக்கும்.
இப்போது Button1_Click ஈவண்டில் பின் வருமாரு மாற்றி அமைப்போம்.
protected void Button1_Click(object sender, EventArgs e)
        {
            string cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {

                SqlDataAdapter da = new SqlDataAdapter("spGetMarksBYsno", con);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.AddWithValue("@sno", txtSno.Text);

                DataSet ds = new DataSet();
                da.Fill(ds);
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }

இப்போது நாம் என்ன student no கொடுக்கின்றோமோ அதன் வெளியீடு மட்டும் கிடைக்கும்..

இப்போது ஒரே டேட்டா செட்டில் ஒன்றுக்கும் மேற்பட்ட டேபிள்களை சேமிப்பது என்று பார்ப்போம்.
முதலில் stored procedure ஒன்றை SSMS மூலம் உருவாக்குவோம்.
create procedure spData
as

Begin

select * from contact;
select * from mark;

End
பிறகு VS2010-ல் வெப் பயன்பாட்டில் கோடிங்கில் பின் வருமாறு மாற்றி அமைப்போம்.
அதற்கு முன்னால் இப்போது DESIGN சென்று இரண்டு GRIDVIEW-க்களை உருவாக்குவோம்.
பின்னர் நிரல் வரிகளில் பின் வருமாறு மாற்றி அமைப்போம்.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace WebApplication5
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {
                SqlDataAdapter da = new SqlDataAdapter("spData", con);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                DataSet ds = new DataSet();

                da.Fill(ds);

                GridView1.DataSource = ds.Tables[0];
                GridView1.DataBind();

                GridView2.DataSource = ds.Tables[1];
                GridView2.DataBind();

            }
      }
     
    }
}
இவ்வாறு நாம் ஒன்றுக்கும் மேற்பட்ட டேபிள்களை ஒரே டேட்டா செட்டில்
சேமித்து அதை வெளிப்படுத்தலாம்.
output:

-                               முத்து கார்த்திகேயன்,மதுரை



No comments:

Post a Comment