Databasteknik II: Inlämningsuppgift 4 - ODBC

ODBC är ett gammalt och beprövat sätt att arbeta med databaser inifrån ett program. Wikipedia skriver:
ODBC remains largely universal today, with drivers available for most platforms and most databases. It is not uncommon to find ODBC drivers for database engines that are meant to be embedded, like SQLite, as a way to allow existing tools to act as front-ends to these engines for testing and debugging.

However, the rise of thin client computing using HTML as an intermediate format has reduced the need for ODBC. Many web development platforms contain direct links to target databases - MySQL being particularly common. In these scenarios, there is no direct client-side access nor multiple client software systems to support; everything goes through the programmer-supplied HTML application. The virtualization that ODBC offers is no longer a strong requirement, and development of ODBC is no longer as active as it once was.

Mål

Scenario

Vi ska skriva ett ODBC-program för att studera och uppdatera demo-databasen från kursen Databasteknik. Den databasen användes i några av övningarna och inlämningsuppgifterna i den kursen.

Förberedelser

Visual Studio 2013

Här kan man läsa mera om hur man använder (och även laddar hem och installerar) Visual Studio 2013. Följ instruktionerna där om hur man skapar ett enkelt C-program.

ODBC i Windows idag använder "breda strängar" eller "wide strings", som är strängar som består av breda tecken, dvs tecken som lagras med mer än åtta bitar per tecken. Därför kan man behöva ändra i inställningarna.

Högerklicka därför på projektnamnet i Solution Explorer i Visual Studio, välj Properties, sen Configuration Properties i menyn, General, och till sist ändra Character Set till Use Multi-Byte Character Set

Det är tillåtet att använda andra kompilatorer och programmeringsomgivningar än Visual Studio 2013, till exempel GCC på Linux, men det var Microsoft som hittade på ODBC, och ODBC brukar vara enklast på Windows.

Visual Studio 2015

Jag har inte själv provkört ODBC med Visual Studio 2015, men här kan man läsa mera om hur man använder (och även laddar hem och installerar) Visual Studio 2016. Följ instruktionerna där om hur man skapar ett enkelt C-program.

Linux

Efter att ha installerat Mimer på en Linux-maskin har jag kunnat kompilera ODBC-program med det här kommandot:

gcc -Wall -std=c99 -g odbcprogrammet.c -I/usr/local/mimer/installation/MimerSQL-10.0.6J/include /usr/local/mimer/installation/MimerSQL-10.0.6J/lib/libmimodbc.so -o odbcprogrammet

Jag fick det inte att fungera mot servern basen.oru.se, men däremot mot en lokal databas på samma dator.

Uppgifter

  1. Kom ihåg: För att kunna koppla upp sig mot en databas (som demobasen) med till exempel Mimer-klientprogrammet Batch SQL måste man först lägga in den i Mimer Administrator,
    Se Getting started with Mimer
  2. Kontrollera med Batch SQL att det fungerar att koppla upp sig mot Mimer-databasservern och att logga in med det användarnamn och det lösenord som används i ODBC-programexemplen. (Servern heter basen.oru.se, databasen heter demobasen, användarnamnet är demouser och lösenordet är fnord.)
  3. Kom ihåg: För att kunna koppla upp sig med ODBC mot en databas (som demobasen) måste man (lite beroende på vilka rättigheter ens användare har) inte bara lägga in den i Mimer Administrator, utan man måste dessutom skapa en datakälla med ODBC-verktyget ODBC Data Source Administrator i kontrollpanelen. (I Windows 7 är det enklast att skriva ODBC i sökfältet i startmenyn. På Windows XP kan man klicka Start -> Control Panel -> Performance and Maintenance -> Administrative Tools -> Data Sources (ODBC))
    Se också Getting started with Mimer
    Det kan hända att detta inte fungerar i datorsalarna, eftersom användarna inte har tillräckliga rättigheter. Om databasen demobasen inte fungerar, kan man i stället använda databasen dbk enligt nedan. Men tänk på att från början finns inga tabeller i den databasen.
  4. Studera och provkör ett eller flera av de ODBC-program som finns att ladda ner från Databasteknik-bokens webbplats.
  5. Varje student får ett användarnamn och ett lösenord till en databas som ODBC-programmmet som ska skrivas i uppgiften ska jobba med. (Servern heter basen.oru.se och databasen heter dbk.) Kontrollera att det fungerar att koppla upp sig mot Mimer-databasservern och att logga in med ditt användarnamn och lösenord. Prova dels med Batch SQL, och dels med ett mycket enkelt ODBC-program.
  6. Skapa tabeller och lägg in data för demo-databasen, enligt de instruktioner som finns i övningsuppgift 3 i kursen Databasteknik.
  7. Skriv ett ODBC-program i C som ansluter till demo-databasen, och kan:
      visa information om en anställd (ur tabellen employee) med ett namn som användaren anger
    1. visa information om en anställd med ett nummer som användaren anger
    2. lägga till en ny anställd
    3. ta bort en anställd
    4. ändra lönen för en anställd
    Eventuella fel som uppstår i programmet ska hanteras på lämpligt sätt. Tänk på referensintegriteten, till exempel om man tar bort en anställd som någon annan har som chef, eller om man lägger till en anställd och som hennes chef skriver in ett nummer på en anställd som inte finns.

Tips

Redovisning

Visa programmet för läraren, demonstrera hur det fungerar, och diskutera,
eller,
skicka e-post med fullständiga och tydliga beskrivningar av hur programmet fungerar och är uppbyggt. Skicka med väl valda och väl kommenterade testkörningar, med in- och utdata. Skicka också med källkoden, med förklaringar.

Om man arbetat i en miljö som Visual Studio eller Eclipse bör man packa ihop hela projektkatalogen som en Zip-fil och skicka den som en bilaga. (Även rar- och tar-filer fungerar.) Men döp först om Zip-filen från nånting.zip till exempelvis nånting.info för att överlista överambitiösa virusfilter.

Arbeta i grupper om en eller två studenter. I undantagsfall kan man arbeta i grupper om tre, men fråga läraren först.

Det är tillåtet att samarbeta i större grupper än så, men varje grupp om 1-3 studenter måste fortfarande redovisa separat, och det måste också tydligt framgå (i rapporten eller på annat sätt) vilka som deltog i samarbetet.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 31 mars 2016