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 பயன் படுகின்றது.
அது பற்றி பிரிதொரு கட்டுரையில் காண்-போம்.
-
                                         முத்து கார்த்திகேயன், மதுரை






                  


Thursday 1 September 2016

JQUERY சில அடிப்படை குறிப்புகள்




JQUERY புதிய நிரலாக்க மொழியல்ல. இது ஜாவா ஸ்கிரிப்ட் மொழியின் Light weight library ஆகும்.இது ஜாவா ஸ்கிரிப்ட் மொழி கொண்டு நாம் செய்யும் வேலைகளை எளிதாக்குகின்றது.இது HTML மொழியின் DOCUMENT TRAVERSAL ,ஈவண்ட் ஹாண்ட்லிங் ,அனிமேசன் வேலைகள் மற்றும் அஜாக்ஸ் போன்றவற்றை எளிதாக்குகின்றது. இது லட்சக் கணக்கான் நிரலாளர்கள் ஜாவா ஸ்கிரிப்ட் கொண்டு செய்யும் வேலைகளை மாற்றி இலகுவாக்குகின்றது.

JQUERY –நண்மைகள்

இது எல்லாவிதமான இணைய உலாவிகளிலும் (Browser) இயங்க கூடியது.ஜாவா ஸ்கிரிப்ட் கொண்டு நாம் எழுதும் நிரல் வரிகள் ப்ரவுசர்கள் மாறும் போது வெவ்வேறாக அமையக் கூடும்.ஆனால் JQUERY அப்படியல்ல.மேலும் JQUERY கொண்டு எழுதும் போது ஜாவா ஸ்கிரிப்ட் கொண்டு எழுதுவதை விட வேலை எளிதாகுகின்றது
JQUERY நீட்டுவிக்கக் கூடிய தன்மை கொண்டது.அஜாக்ஸை ஆதரிக்கின்றது.  JQUERY ஆனதில் உபயோகப் படுத்துவதற்கான நிறைய Plug in –கள் எளிதாக  கிடைக்கின்றன.

JQUERYயை எவ்வாறு பெறுவது?

இந்த ஜெகொரியை jquery.com என்கின்ற இணையத்தளத்திற்கு சென்று தரவிறக்கம் செய்து கொள்ளலாம்.அதில் உள்ள டவுன்லோட் பட்டனைச் சொடுக்கி (jquery v3.1.0 ) அதில் compressed version மற்றும் uncompressed version என்று இரு வித லைப்ரரிகள் உள்ளன. Compressed வெர்சனில் white spaces  அகற்றப்பட்டு வேரியபிள் பெயர்கள் சிறிதாக்கப்பட்டு production வேலைகளுக்கு ஏற்றதாக அமைகின்றது.
Uncompressed version ஆனது வாசிக்கக்கூடியதாக உள்ளது.
அவற்றை நம் ப்ராஜெக்டில் இணைத்துக் கொள்ளலாம்.

உதாரணம்:

இப்போது நம் ப்ராஜெக்டில் பட்டன் (html element button)ஒன்று உள்ளது என்று எடுத்துக் கொள்வோம்.இதை சொடிக்கிடும் போது நிகழ வேண்டிய செயற்பாடுகளை ஜாவா ஸ்கிரிப்டில் நாம் எழுத எத்தனை வரிகள் தேவையென்பதை காணவும்.
html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" >
        window.onload = function () {
            document.getElementById('btn1').addEventListener('click', clickHandler, false);
        };
        function clickHandler() {
            alert("welcome");
        }
   
        </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <input type="button" id="btn1" value="click" runat="server" />

    </div>
    </form>
</body>
</html>



இதிலும் சில நடைமுறை சிக்கல்கள் உள்ளன. இதிலும் addEventListener என்பதை IE8, மற்றும் அதற்கு முந்தைய வெர்சன்கள் ஆதரிப்பதில்லை. அவை attachEvent என்பதையே ஆதரிக்கின்றது.எனவே நிரல் வரிகளை பின் வருமாறு மாற்றி அமைக்க வேண்டியிருக்குகின்றது.
       <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" >
        window.onload = function () {
        if(document.addEventListener)
        {
            document.getElementById('btn1').addEventListener('click', clickHandler, false);
        }
        else
        {
         document.getElementById('btn1').attachEvent('onClick', clickHandler);
        }
        function clickHandler() {
            alert("welcome");
        }
   
        </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <input type="button" id="btn1" value="click" runat="server" />

    </div>
    </form>
</body>
</html>



ஆனால் இதையே jquery கொண்டு எழுதும் போது இவை எத்தனை எளிதாக்குகின்றது என்பதை பின் வரும் வரிகள் கொண்டு கண்டு கொள்ளலாம்.


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
    <<script src="jquery-3.1.0.js" type="text/javascript"></script>

</head>
<body>
<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery('#btn1').click(function () {
            alert("welcome");
        });
    });



</script>
    <form id="form1" runat="server">
    <div>
    <input type="button" id="btn1" value="click" runat="server" />

    </div>
    </form>
</body>
</html>


இதற்கு நாம் முதலில் ப்ராஜெக்ட் எக்ஸ்ப்ளோரரை open செய்து கொள்ள வேண்டும். அதில் நாம் தரவிரக்கம் செய்த jquery கோப்புகளை காப்பி செய்து அதன் பிறகு ப்ராஜெக்ட் எக்ஸ்ப்ளோரரில் ப்ராஜெக்ட் பெயரை வ்லது க்ளிக் செய்து paste செய்யவும்.இதையே ட்ராக் செய்து கோடிங் பக்கத்தில் உள்ள head டேக்கிற்குள் விடவும்.
மேலே உள்ள கோடிங்கை கவனிக்கவும்
இங்கு script என்பதில் src என்பதில் highlight செய்யப்பட்டதை கவனிக்கவும்.


மேலே உள்ள கோடிங்கில் ஜெகொரியின் நோக்கமானது btn1 என்கின்ற பட்டனை க்ளிக் செய்யும் பொழுது jquery tutorial என்கின்ற alert box ஆனது காண்பிக்கப் படவேண்டும். இந்த வரிகளில் #btn1 என்பதில் உள்ள # குறியீடு குறிப்பிடப் பட்டுள்ளது element-ன் பெயர் என்பதைக் குறிக்கின்றது.
டாக்குமெண்ட்  ஆனது முதலில் load ஆன பிறகே மேற்கண்ட  வரிகள் செயற்படுத்தப் பட வேண்டும் என்பதை jquery(document).ready என்ற வரிகள் குறிக்கின்றன.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
    <<script src="jquery-3.1.0.js" type="text/javascript"></script>

</head>
<body>
<script type="text/javascript">
    $(document).ready(function () {
       $('#btn1').click(function () {
            alert("welcome");
        });
    });



</script>
    <form id="form1" runat="server">
    <div>
    <input type="button" id="btn1" value="click" runat="server" />

    </div>
    </form>
</body>
</html>



இப்போது மேலே உள்ள கோடிங்
கை கவனியுங்கள். இதில் jquery என்பதற்கு பதில் $ குறியீடு உள்ளது.இதுவும் நடைமுறைக்குண்டானதே.
மேலே உள்ள வரிகளின் படி document முதலில் load ஆகின்றது. அதன் பிறகு $(document).ready(function() என்கின்ற படி ஒரு பெயரிடப் படாத function செயல் பட ஆரம்பிக்கின்றது. btn1 ஆனது சொடுக்கிடப் படும்பொழுது அதன் id ஆனது $(‘#btn1’) என்பதன் மூலம் கண்டறியப் பட்டு என்ன நடக்க வேண்டும் என்பதை $(‘#btn1’).click(function() {  } என்பதில் உள்ள பெயரிடப் படாத ஃபங்சனில் உள்ளே வரிகள் குறிக்கின்றன. அதனுள் உள்ள alert(“jquery tutorial”) என்பது செயலிடப்பட்டு பின் வரும் படி வெளியீடு கிடைக்கின்றது.



இப்பொழுது புரிகின்றதா ஜெகொரியின் எளிமையும் தன்மையும்.
                                    -முத்து கார்த்திகேயன்,மதுரை