Databas – Verktyg & data

Inledning

Det är dags att gå in på området databaser. Vi skall börja med grunderna och arbeta oss uppåt. Målet är att ge en bra bild av hur databaser fungerar med .NET samt tips på verktyg, ramverk som kommer att underlätta hanteringen av data och databaser.

Vi börjar med två snabba frågor

Vad är en databas?

En databas är en samling information som är organiserad på ett sådant sätt att det är lätt att söka efter och hämta enskilda bitar information, samt ofta även att ändra informationen.

I praktiken handlar det oftast om en av två olika varianter. En fil-databas där all data lagras i en fil, exempel Access eller SQLite. Eller vanligast om en databas-server (eller databashanterare) som installeras som ett program. Det finns ett flertal populära databashanterare t.ex MySQL, MariaDB, Oracle, DB2 och Microsoft SQL Server bara för att nämna några.

Skillnaden mellan en fil-databas och en databas-server är sättet data används. Gör du ett spel där du vill lagra och distribuera data om t.ex. banor, föremål, fiender så kan du välja en fil-databas. Vill du kunna dela och bearbeta data med andra genom ett program eller en hemsida så är nog en databas via en server det bästa alternativet.

Varför använda databaser?

Den stora grejen med databaser är att de är skapta för att du skall kunna lagra stora mängder data och samtidigt kunna hitta relevant data mycket snabbt. Du får alltså mycket funktionalitet "på köpet" genom att använda databaser. Det finns ramverk och verktyg som kommer göra arbetet med databaser mycket behagligt. Dessa verktyg och ramverk utvecklas ständigt, så att arbeta med databaser idag är inte som det var för 10 år sedan, det kommer också att ändra sig i framtiden. Behovet av databaser kommer alltid att finnas.

Förberedelser

Vi kommer att installera Microsoft SQL Server 2012 Express samt en fri exempel-databas kallad "AdventureWorks". Vi kommer också att använda programmet SQL Server Management Studio för att administrera databaser och för att ställa frågor och "titta på" data. Allt kommer att visas i videon nedan.

Länkar hittar du här:

Kommunikation och SQL

Kommunikation med databaser innefattar oftast språket SQL (Structured Query Language) vilket kan ses som ett frågespråk. SQL omfattar även kommandon som påverkar strukturen på databasen men vi kommer att kika främst på de 4 vanligaste:

  • SELECT, väljer data
  • INSERT, lägger in data
  • UPDATE, uppdaterar data
  • DELETE, tar bort data

Anledningen att vi belyser SQL är att det oftast är den minsta gemensamma nämnaren mellan olika sorters databashanterare även om SQL-syntaxen kan skilja sig något ibland.

Senare kommer vi att använda oss av ramverk som till stor del bygger bort behovet av att kunna SQL. Men förr eller senare så dyker det alltid upp situationer där man tjänar på att kunna SQL.

Vi tar en bild för att illustrera hur databaser är uppbyggda.

bild

En databashanterare kan innehålla flera databaser (1), t.ex. "AdventureWorks2012" som vi kommer att jobba med. I en databas finns det tabeller (2). Varje tabell innehåller kolumner (3) av olika datatyper. Datatyper kan vara heltal, flyttal, decimaltal, datum, strängar, etc. Mycket likt de datatyper som vi programmerar med.

I tabellen (2) finns det rader (4). Varje rad är data i vår databas. Ungefär som en rad i ett Excel-ark.

Här skulle det vara på sin plats att gå igenom SQL mer ingående men det hade blivit en alldeles för lång artikel. Vi nöjer oss med att rekommendera följande sidor:

C# Test

Nu gör vi den allra enklaste formen av kommunikation genom att direkt prata med SQL Server via just SQL.

Vi använder oss av namnrymden System.Data.SqlClient samt klasserna SqlConnection, SqlDataReader och SqlCommand.

I videon nedan använder vi Visual Studio Express 2012 for Windows Desktop och utgår från ett vanligt Console Application.

Koden nedan är samma som i videon fast med extra felhantering.

Databas - Test

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DatabasTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Database=AdventureWorks2012";
            SqlConnection connection = null;
            SqlCommand command = null;

            try
            {
                connection = new SqlConnection(connectionString);
                connection.Open();

                SqlDataReader reader = null;
                command = new SqlCommand("SELECT * FROM Person.Person WHERE FirstName = 'Ken'", connection);
                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(reader["LastName"] + " " + reader["FirstName"]);
                }

                connection.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (connection != null)
                    connection.Dispose();
                if (command != null)
                    command.Dispose();
            }
        }
    }
}

Vår connectionString är utformad för att passa Microsoft SQL Server. "Data Source" anger server + instansnamn. Punkten betyder localhost, alltså "denna dator". "Integrated Security" anger att vi skall ansluta med vår Windows-identitet. Detta kommer att fungera eftersom det är vi som installerat SQL Server.

Databasen vi väljer heter "AdventureWorks2012" och installerades i en tidigare video.

Behöver du justera rättigheterna i SQL Server för t.ex. en anna användare eller grupp som skall ansluta så måste du starta SQL Management Studio som administratör och göra ändringar där under säkerhet.

Vill du veta mer om connection strings så rekommenderar vi www.connectionstrings.com. Där hittar du exempel till de flesta databashanterare.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Scroll to top