Wednesday 21 September 2016

ADO.NET எவ்வாறு செயல் படுகின்றது?




ADO.NET என்பதம்முழு அர்த்தம் Microsoft Activex Data objects என்பதாகும். இது ஒரு புதிய தொழில் நுட்பமல்ல.மாறாக இது கிளாஸ்களின் தொகுப்பாகும்.(.NET FRAMEWORK). இது ஒரு டாட்நெட் பயன்பாடானது டேடாபேஸ்(தகவல் தளம் ).அல்லது XML ஃபைல்களுடன் தொடர்பு கொள்ள பயன்படுகின்றது
இதன் படி முதலில் SQL MANAGEMENT STUDIO –வை OPEN செய்யவும். இடது பக்க பேனலில் database என்பதை வலது க்ளிக் செய்யவும். வரும் மெனுவில் NEW DATABASE என்பதை செலக்ட் செய்யவும். வரும் டயலாக் பாக்ஸில்



DATABASE NAME என்பதில் பெயர் குறிப்பிடவும். எது சம்பந்தப்பட்ட தகவல் தளம் உருவாக்குகிறோமோ அதற்கு தொடர்புடைய பெயரை  .கொடுக்கவும். .உதாரணத்துக்கு  student என்கின்ற பெயரை குறிப்பிட்டுள்ளேன். கீழே OK க்ளிக் செய்யவும்.
இப்போது student என்பதை expand செய்தால் tables என்பது வெளிப்படும். அதை வலது க்ளிக் செய்து new table என்பதை க்ளிக் செய்யவும். அதன் அமைப்பை சான்று ஒன்றின் படி அமைக்கவும்(இது ஒரு உதாரணம் மட்டுமே)





பின் save all கொடுத்தால் டேபிளின் பெயர் கேட்கும். பெயர் கொடுக்கவும்.சான்றாக இங்கு mark என்பது கொடுக்கப்பட்டுள்ளது. அதன் பின் டேபிளின் பெயரை வலது க்ளிக் செய்து edit top 200 rows என்பதை கொடுக்கவும்.இப்போது டேட்டா கொடுக்கவும்.




ஒரு ஏஎஸ்பி பயன்பாட்டில் முதலில் க்ரிட்வியு(GRID VIEW) ஒன்றை டூல்பாக்ஸிலிருந்து  டிராக் செய்து வெப் பக்கத்தில் விடவும்.....அதில் வரும் க்ரிட்வியுவின் Auto format என்பதில் உதாரணத்துக்கு Brown sugar என்பதை தேர்வு செய்யவும். பின் வரும் கோட்டினை page_load ஈவண்ட்டுடன் இணைக்கவும்.
சான்று நிரல்
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;

namespace WebApplication3
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String cs = "data source=MUTHU-PC\\SQLEXPRESS;database=student;integrated security=SSPI";
            SqlConnection con = new SqlConnection(cs);
            SqlCommand com = new SqlCommand("select * from mark", con);
            con.Open();
            SqlDataReader dr = com.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();

        }
    }
}

நிரல் விளக்கம்:


      முதலில் sqlserver உடன் கனெக்சன் ஏற்படுத்தப்படுகின்றது. அடுத்தது அதற்கு command object உருவாக்கப்படும்.. கனெக்சன் ஒப்பன் செய்யப்படும்.. கமாண்ட் execute செய்யப்படும். ரிசல்ட் sqlDataReader க்கு pass செய்யப்படுகின்றது. பின் அது கிரிட் வியூ கன்ட்ரோலின் source ஆக பயன்படுகின்றது.



Connection கிளாஸ்:


ஒவ்வொரு டேட்டா பேஸும் ஒரே நேம் பேஸை சப்போர்ட் செய்வதில்லை.SQL SERVER என்றால் System.Data.SqlClient என்பதை using என்பதன் மூலம் இம்போர்ட் செய்து கொள்ளலாம். அதே போல் 0racle டேட்டா பேஸ் என்றால் System.Data.oracleClient என்பதை
இம்போர்ட் செய்ய வேண்டும். Excel அல்லது Access என்றால் System.Data.oledbClient என்பதை இம்போர்ட் செய்து கொள்ளலாம்.odbc data base என்றால் System.Data.OdbcClient என்பதை இம்போர்ட் செய்ய வேண்டும்.
முதலில் connection ஒன்று குறிப்பிட்ட டேட்டா பேஸ் உடன் ஏற்படுத்த வேணடும்.அதற்காக முதலில் cs என்பதில் data source==MUTHU-PC\\SQLEXPRESS என்பதை குறிப்பிடுள்ளேன். உங்கள் கணினியில் sql server 2008 management studio ஆனதை ஒப்பன் செய்யும் போது server name என்பதில் உள்ள பெயரை கொடுக்கவும்.. அடுத்ததாக எந்த டேட்டா பேஸ் உடன் கனெக்ட் செய்ய வேண்டும் என்பதை குறிப்பிட வேண்டும்.
அதற்கு அடுத்ததாக username,password கொடுக்க வேண்டும்..அல்ல்து விண்டோஸில் என்ன password கொடுக்கிறோமோ அதை எடுத்துக் கொள்ள வேண்டும் என்றால் integrated security=SSPI" என்பதை குறிப்பிட வேண்டும்.பிறகு SqlConnection க்கு ஆப்ஜெக்ட் உருவாக்கி அதற்கு பராமீட்டராக connection string ஆன cs என்பதை குறிப்பிடுவோம்..

SqlConnection con = new SqlConnection(cs);

முடிவில் கனெக்சனை மறக்காமல் close செய்ய வேண்டும்.
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;

namespace WebApplication3
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String cs = "data source=MUTHU-PC\\SQLEXPRESS;database=student;integrated security=SSPI";
            using(SqlConnection con = new SqlConnection(cs))
            {
            SqlCommand com = new SqlCommand("select * from mark", con);
            con.Open();
            SqlDataReader dr = com.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();
            }

        }
    }
}

மேலே உள்ள நிரலாக்க வரிகளின் படி using என்கின்ற வரியை SqlConnection என்பதில் உபயோகப்படுத்துவோம் என்றால் connection ஆனது தானாகவே close செய்து கொள்ளும்.
எனவே using ஆனது நேம்பேஸை இம்போர்ட் செய்வதற்கும் கனெக்சன் தானாக close செய்வதற்கும் பயன்படுகின்றது.
 ஒவ்வொரு பக்கத்திலும் connection string கொடுப்பதால் சில தீமைகள் இருக்கின்றன.
வேறு ஒரு டேட்டா பேஸை connection பாயிண்ட் பண்ணினால் recompilation மற்றும் redeployment செய்ய வேண்டியிருக்கும்..மேலும் இதற்குண்டான ப்ரொஜெக்டில் 100 பக்கங்கள் இருப்பதாக வைத்துக்கொள்வோம்.ஒவ்வொரு பக்கத்திலும்இருக்கும்.
டேட்டா பேசை மாற்ற வேண்டியிருக்கும்..இதற்கு பதிலாக web.config ஃபைலில் பின் வருமாறு கோடிங் செய்ய வேண்டும்.
<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>

இப்போது கனெக்சன் ஸ்ட்ரிங் ஆனது பின் வரும் முறையில் கிடைக்கப்பட்டிருக்கின்றன…
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 WebApplication3
{
    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))
            {
            SqlCommand com = new SqlCommand("select * from mark", con);
            con.Open();
            SqlDataReader dr = com.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();
            }

        }
    }
}

இப்போது கனக்சன் ஆப்ஜெக்ட் மூலம் முதலில் க்னெக்ட் செய்து விட்டோம்..

SqlCommand class.:


இது நாம் sql server உடன் இயங்கக்கூடிய SQL STATEMENT அல்லது SQL STORED PROCEDURE போன்றவற்றை உருவாக்கப் பயன்படுகின்றது. இந்த கிளாஸின் மெத்த்ட்களான ExecuteReader ,ExecuteNonQuerty,ExecuteScalar போன்றவை பொதுவாக பயன்படுகின்றது.

ExecuteReader-


இது database ஆனது ஒன்றுக்கும் மேற்பட்ட டேட்டாவை ரிடர்ன் செய்யும் போது பயன் படுகின்றது.

ExecuteNonQuery:


இது insert,update,delete போன்ற இயக்கங்களில் பயன்படுகின்றது..

ExecuteScalar:


இது database ஆனது single வேல்யூவை ரிடர்ன் செய்ய பயன்படுகின்றது. உதாரணத்துக்கு database-களின மொத்த ரோக்களின்  ரிடர்ன்  எண்ணிக்கையை ExecuteScalar  மூலம் பெறலாம்..


சரன்று நிரல்:

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 WebApplication3
{
    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))
            {
                SqlCommand com = new SqlCommand();
                com.Connection =con; 
                con.Open();
                com.CommandText=" Delete from mark where sno=101";
                int TotalRows=com.ExecuteNonQuery();
                Response.Write("totalrowsAffected="+TotalRows+"<br/>");

                com.CommandText = "insert into mark (sno,sname,tmark)values(101,'ram', 98)";
                TotalRows=com.ExecuteNonQuery();
                Response.Write("totalrowsAffected="+TotalRows+"<br/>");


               
                com.CommandText="update mark set tmark=100 where sno=102";
                TotalRows=com.ExecuteNonQuery();
                Response.Write("totalrowsAffected="+TotalRows);



            }

        }
    }
}


சான்று வரிகள் (ExecuteScalar)

 com.CommandText = "select count(sno) from mark";
 int total =(int) com.ExecuteScalar();
 Response.Write("totalrows=" + total + "<br/>");

SqlDataReader பயன்பாடுகள்:

SqlDataReader ஆனது டேட்டாவை திறன் மிகுந்த முறையில் read செய்யப் பயன்படுகின்றது.
இது read only ஆகும்..மேலும் ஒரு ரெக்காடில் இருந்து ஃபார்வேர்ட் மட்டுமே செய்ய முடியும். Backward செய்ய முடியாது. SqlDataReader என்பது கனெக்சன் ஒரியண்ட்டடு முறையில் மட்டுமே டேட்டாவை ரீட் செய்யும்..மேலும் new ஆபரேட்டர் உபயோகித்து ஆப்ஜெக்ட் உருவாக்க மாட்டோம் ஏனெனில்  SqlDataReader க்ளாஸிற்கு constructor கிடையாது..
தொடர்பருந்த நிலையில் டேட்டாவை ஆக்சஸ் செய்வதற்கு Dataset பயன் படுகின்றது.
அது பற்றி பிரிதொரு கட்டுரையில் காண்-போம்.
-
                                         முத்து கார்த்திகேயன், மதுரை






                  


No comments:

Post a Comment