Vinnaren i pepparkakshustävlingen!
2006-07-25, 08:46
  #1
Medlem
hej!

jag har lite funderingar på att börja ge mig in i databasvärlden, typ mysql.
eftersom jag programmerar c++ tänkte jag att isåfall även intergrera databaserna i lite mfc applikationer. saken är den att jag har 0 koll på mysql
och databaser över huvud taget. har googlat lite men inte funnit det jag är ute efter, dvs tutorials och liknande som tar upp databashantering från grunden och hur man kopplar dessa till sin c++ app.

btw, är det smartare att lära sig mysql än typ acess, eller är det nått annat som är bättre?

mvh
Citera
2006-07-25, 10:06
  #2
Medlem
är ute på lite djupt vatten men kan försöka peka lite i olika riktningar.

Skillnaden mellan en accessdatabas och en "riktig" databas(mysql, postgre, oracle...) är att accessvarianten är filbaserad och går således att distribuera med ett program.

För de andra varianterna krävs att man har en databasserver som programmet kopplar upp mot. Hanteringen av databaserna blir i stort sett densamma och syntaxen för sql-kommandon skiljer sig inte så mycket åt.

Databasen kan man från programmet komma åt med t.ex ODBC(open databse connectivity)

Här är en bra (gratis) webbkurs om databaser:

http://www.databasteknik.se/webbkursen/

Tror dock inte den tar upp något om kopplingen till ett program men efter att man har lärt sig vanlig SQL-syntax och lite databsgrunder borde man kunna luska ut resten med hjälp av dokumentationen för ODBC.

Fördelen med mysql och postgre är att de är open source. Oracle och Access är det inte. Vad man väljer beror även på vad man ska lagra i databasen. För exempelvis geografisk information(punkter, linjer etc...) har postgre ett tillägg som heter postgis vilket gör att man kan utföra ganska komplicerade kommandon redan i databasen. Oracle spatial är en kommersiell variant(även mysql spatial finns gratis men den har sågats av många...).

Det finns säkerligen även andra objekt man kan lagra i databaser så lite eftersökningar kan förenkla det hela.

Vanligtvis vill man kanske bara lagra text/tal/datum m.m och då duger vilken som helst av ovanstående.

Jag har framgångsrikt lyckats installera både postgre och mysql på en linuxmaskin(ubuntu) och det var inga som helst problem. Finns dessutom många guider för det.
Citera
2006-07-25, 10:14
  #3
Medlem
PrettySneakys avatar
Citat:
Ursprungligen postat av secce
hej!

btw, är det smartare att lära sig mysql än typ acess, eller är det nått annat som är bättre?

mvh

Är väl ingen expert men jag har fått intrycket av att SQL används mycket mer inom mjukvaruindustrin. Har aldrig sett något företag som söker efter folk med accesserfarenhet. SQL-erfarenhet däremot verkar vara en stor merit.

Jag skulle kört på sql.
Citera
2006-07-25, 10:57
  #4
Medlem
Citat:
Ursprungligen postat av PrettySneaky
Är väl ingen expert men jag har fått intrycket av att SQL används mycket mer inom mjukvaruindustrin. Har aldrig sett något företag som söker efter folk med accesserfarenhet. SQL-erfarenhet däremot verkar vara en stor merit.

Jag skulle kört på sql.

Antar du menar mySQL?

SQL är språket som används för att ställa frågor till en databas och används även i access.

Just det, ett tillägg till mitt föregående inlägg.

Om databasen ska ha flera användare samtidigt är det inte läge att använda access eftersom datans integritet inte kan garanteras(om det nu inte är löst på något sätt).
Citera
2006-07-25, 13:08
  #5
Medlem
En sak som möjligen kan vara av intresse är SQLite
Citat:
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.
Citera
2006-07-25, 15:58
  #6
Medlem
blueCommands avatar
http://mysqlcppapi.sourceforge.net/
Är ett bättre val om du vill använda MySQL enkelt och med objektorientering
Citera
2006-07-25, 17:22
  #7
Medlem
PrettySneakys avatar
Citat:
Ursprungligen postat av MysT
Antar du menar mySQL?

SQL är språket som används för att ställa frågor till en databas och används även i access.

Alltså, jag menade att SQL-språket efterfrågas mycket mer av industrin så därför rekomenderar jag att secce satsar på SQL eller mySQL i detta fallet. Kan man mySQL så är det väl inte så svårt att sätta sig in i tex Microsofts SQL server.
Citera
2006-07-28, 12:43
  #8
Medlem
http://tangentsoft.net/mysql++/
http://www.yeohhs.com/mybooks.htm
Citera
2006-07-29, 18:32
  #9
Medlem
Citat:
Ursprungligen postat av PrettySneaky
Alltså, jag menade att SQL-språket efterfrågas mycket mer av industrin så därför rekomenderar jag att secce satsar på SQL eller mySQL i detta fallet. Kan man mySQL så är det väl inte så svårt att sätta sig in i tex Microsofts SQL server.

Kan man SQL funkar det till de flesta relationsdatabaser, från MySQL och upp till gigantiska system som DB2, rdb och Terabyte RDBMS.

Språket är inte speciellt knepigt i sig.

Det jag har märkst skiljer sig en del är HUR man får iväg sina SQL-satser till databashanteraren från applikationen. Det finns två skolor.

1) Call Level API - används av Sybase, MS SQL Server m.fl.
SQL satsen skickas som ett strängargument till en funktion, bakom detta brukar det dölja sig en TCP-socket eller motsvarande. På Sybase öppnade man en "handle" till databasmotorn (förmodligen en TCP-socket) och sedan tryckte man SQL-satsen genom denna. Typ så här

dbcmd (MyServerSomewhere, "DELETE FROM VasileTable");
retcode=dbexec(MyServerSomewhere);

if (retcode != SQL_SUCCESS){
printf("Shit!! SQL syntax error or something...");
}

Kör man en sats som returnerar data (d.v.s. SELECT i SQL) så får man plocka
rad för rad, kolumn för kolumn i resultatet och skriva ut.

2) En annan teknik användes av Informix, IBM DB2 m.fl.
Här skriver man SQL kod rakt in i källkoden (typiskt C eller COBOL)
och sedan kör man källkoden genom en SQL-precompiler for C/COBOL.
Därefter kompilerar man sin C eller COBOL-kod som vanligt.
Personligen tycker jag metoden suger.

Om man återgår till punkt 1 - alla databastillverkare har sina egna API:er
Detfinns dock generella "skinn" som man kan dra över dessa API:er, varav ODBC väl är det mest kända. Några databashanterare har ODBC som native-API.

Jag kanske har lite böcker och grejer kvar, om du PM:ar kan du få låna om jag hittar dem. Eller om du vill fråga nåt, jag har hållt på mycket med Sybase SQL Server förr (i princip samma som MS SQL Server, Sybase vägrade kalla sin produkt "Sybase" på den oseriösa PC-plattformen en gång i tiden. Upp till v4r2 var de faktiskt identiska! Sybase såldes under eget brans på en massa UNIX-smaker, samt på VAX VMS)
Citera
2006-07-31, 09:41
  #10
Medlem
tack för all matnyttig information!

ska läsa igenom webbkursen först och främst. återkommer sen med fråor, hehe!

tack återigen, mvh /secce
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback