Kezdőoldal > SQL Azure > SQL Azure adatbázis elérése kliens alkalmazásból

SQL Azure adatbázis elérése kliens alkalmazásból

2012. szeptember 25. kedd Hozzászólás Go to comments

Ahhoz, hogy az SQL Azure adatbázisban tárolt adatainkat elérjük egy kliens alkalmazásból, az alkalmazás üzleti logikáján semmit sem kell módosítanunk. Tulajdonképpen csak a „csatlakozási karakterláncot” (Connection String) kell változtatnunk. Egy helyesen megírt .NET alkalmazásnál ráadásul a connection string általában egy app.config (web.config) xml fájlban van letárolva. Így az alkalmazásunkat nem kell újrafordítanunk ahhoz, hogy az adatbázis most már az SQL Azure-ba fusson helyi SQL szerver példány helyett. Az adatok feldolgozásához ugyanazokat az ADO.NET-es objektumokat használhatjuk, mint eddig (SqlCommand, SqlDataReader, SqlConnection stb). Sőt, ha Linq To SQL-t vagy Entity Frameworkot használunk, ott sincs szükség extra munkára, szintén csak a connection string-et kell átírnunk.

Nézzünk erre egy egyszerű példát! Most egy egyszerű konzol alkalmazással érünk el egy adatbázist.

using System;

using System.Data.SqlClient;

namespace SqlAzureDemo

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                using (SqlConnection conn = new SqlConnection())

                {

                    conn.ConnectionString = "ConnectionString";

                    using (SqlCommand cmd = new SqlCommand())

                    {

                      cmd.Connection = conn;

                      cmd.CommandText = "SELECT CustomerID FROM Customers";

                      conn.Open();

                      using (SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection))

                      {

                          while (dr.Read())

                          {

                              //Csináljon valamit.

                              Console.WriteLine(dr[0]);

                          }

                          dr.Close();

                      }

                    }

                }

            }

            catch (SqlException ex)

            {

                Console.WriteLine(ex.Message);

                //Valami baj történt

            }

        }

    }

}

A példában az egyszerűség és az átláthatóság kedvéért a Connecton string-et beégetjük a forráskódba. Ezt egy éles alkalmazásnál célszerű egy külső konfigurációs fájlban elhelyezni (App.config, web.config stb.).

Ha a helyi SQL Server Express példányát szeretnénk elérni, akkor a Connection String az alábbiak szerint nézne ki:

@"Server=.\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes";

Látható, hogy ez klasszikus connection string, ahol megadjuk az adatbázis szerver elérhetőségét, az adatbázis nevét, valamint a hitelesítő adatokat, ami ebben az esetben megegyezik a Windows rendszerbe bejelentkezett felhasználóéval.

SQL Azure esetén nem lehet Trusted_Connection-t használni, csakis kizárólag felhasználónév jelszó párossal tudjuk hitelesíteni magunkat. Ha a fentebbi connection string-et lecseréljük az alábbira, akkor már nem a helyi sql szerverből fogja lekérdezni az adatokat, hanem az SQL Azure adatbázisunkból. Ebben az esetben a connection string az alábbiak szerint módosul:

"Server=e7m4zvqafx.database.windows.net;Database=Northwind;User ID=TuroczyX;Password=myPassword1";

Figyeljük meg, hogy ebben az esetben megadtuk az SQL Azure szerverünk teljes elérési útvonalát,, ami jelenleg az e7m4zvqafx.database.windows.net! A Database ugyanaz, mint a helyi példány esetén. Itt határozzuk meg, hogy az adott adatbázis szerveren melyik adatbázist szeretnénk elérni, jelen esetben a Northwind-et. Az authentikáció ebben az esetben csak felhasználónév és jelszó birtokában történhet. Windows authentikációra nincs lehetőség. Ez ugyanúgy történik, mintha a helyi SQL serverbe authentikálnánk. Tehát amit látnunk kell, hogy csak az adatbázis címét, valamint a hitelesítési adatainkat kell módosítani.

Korábban a connection string valamivel összetettebb volt. Például a Server neve előtt egy tcp: prefixum volt, valamint a felhasználónevet is csak úgy adhattuk meg, hogy kiegészítjük a szerver nevével az alábbi módon: TuroczyX@e7m4zvqafx. Mára ez egyszerűsödött, de nézzük meg ugyanezt a példát a régebbi connection string megadásával!

"Server=tcp:e7m4zvqafx.database.windows.net;Database=Northwind;User ID=TuroczyX@e7m4zvqafx;Password=myPassword1";

Mind a kétféle megadási módszert alkalmazhatjuk, az SQL Azure elfogadja.

Ha Entity Frameworkot használunk, akkor a connection string az alábbiak szerint módosul:

metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=S
ystem.Data.SqlClient;provider connection string="data source=e7m4zvqafx.database.windows.net;initial catalog=Northwind;user id=TuroczyX;password=myPassword1;"

Mint láthatjuk, csak a szerver címe különleges, minden más megegyezik a korábbi connection stringgel.

Figyeljünk arra, hogy ebben az esetben az adatbázisunkhoz tartozó connection string egy XML fájlban lesz letárolva! Mivel csak SQL Authentikációt támogat az SQL Azure, ezért ebben a fájlban szabadon olvasható módon benne lesz a felhasználónevünk-jelszavunk. Ezt természetesen titkosíthatjuk. Az alábbi oldalon további információkat találhat erről: http://msdn.microsoft.com/en-us/library/89211k9b(v=vs.80).aspx.

Advertisements
Kategóriák:SQL Azure Címke: ,
  1. laci hornyacsek
    2012. szeptember 25. kedd - 10:15

    Elnézve a c#-os kódot, arra gondoltam, hogy VB6-ban mennyivel olvashatóbb, karbantarthatóbb kódot lehetett ilyen problémára begépelni, és a gépelés is kevesebb ideig tartott.

    Vicc ez az egész .net!

    Nem azt mondom, hogy a VB6 jobb, csak azt, hogy pl. ezt a példát jobban meg lehet vele oldani, és inkább a VB7-et kelett volna kiadni, ezt a Hejlsber, vagy hogy hívják, “Turbo Pascal villámgyors fordítóhoz” értő kedves embert meg nem felvenni.

    De semmi baj, itt van nekünk a HTML és a JavaScript, a .Net-et meg tanulgassa az, akinek két annya van.

  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: