Tag Archive for database

iPhone – Basic SQLite

Ønsker du at vide hvordan du connecter til din database SQLite som bruges på iPhone platformen, så er der nogle ting du skal have på plads inden du går vider for at oprette, slette og udtrække data.

Det er nermlig selve forbindlsen til din SQLite database, for at kunne bruge SQLite på iPhone kræver det at du har SQLite3 frameworket tilføjet til dit projekt, filens navn er “libsqlite3.0.dylib” som du skal tilføje.

Efter det skal du tilføje følge linje i din .h fil hvor du vil benytte SQLite.

1
import "sqlite3.h"

Gå ned til din funktion viewDidLoad og tilføj følge kode.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// Open database
UIAlertView *view;
sqlite3 *database;
 
int result = sqlite3_open("path-til-din-db", &database);
 
// If database fail to open.
if( result != SQLITE_OK )
{
NSLog(@"Database connect fail!");
 
sqlite3_close(database);
view = [[UIAlertView alloc]
initWithTitle: @"Database Error"
message: @"Failed to open database."
delegate: self
cancelButtonTitle: @"Hrm." otherButtonTitles: nil];
[view show];
[view autorelease];
return;
 
NSArray *array = [[NSArray alloc] initWithObjects: nil];
self.listData = array;
[array release];
}
else
{
// make my stuff from database.
}

Det vi gør her er at vi bruger sqlite3_open til at åbne vores forbindlse med derefter sprøger vi så vores forbindlse om alt gik godt med SQLITE_OK hvis det ikke går som forventet altså at vi ikke bliver connectet bliver der vist en alert på vores skræn ved hjælp af UIAlertView går alt godt og vi vil forsætte så kommer der ingen alert frem på vores skærm.

Håber det var forståligt og brugbart.

Spekfikser et row select

Hvis man vil spefiksere nået data fra databasen når man har meget data man ikke behøves at liste ud altid men kun nået af dataen skal listes ud så kan man benytte en WHERE statement til at fortælle MySQL hvad for nået data der skal trækkes ud til brugeren, eks. hvis man har en land database hvor man updater hvornår man sidst har fået infomartion fra landet og det skal så kun være de lande som man har fået data fra efter 2006.

SELECT * FROM Country WHERE UpdateYear > 2006;

En mere complex WHERE udtræk kan hvor vi kun vil have de udtræk hvor der er flere indbygger end 1 mil. og mindre end 5 mil. vil en normal SQL se såda ud.

SELECT * FROM Country WHERE Indbygger >= 1000000 AND Indbygger <= 5000000;

Isted for at benytte så lang en SQL kan du bruge BETWEEN i MySQL til at udtrække 2 værdiere mellem hianden den ser sådan ud.

SELECT * FROM Country WHERE Indbygger BETWEEN 1000000 AND 5000000;

Det er nogle værdier i en SELECT statement der er stræker end andre eks. AND er stærker end OR i en SELECT.

WHERE GNP < 1000 AND Continent = ‘Africa’ OR Continent = ‘Asia’;

Denne SQL vil udtrække alle Continent fra Africa hvor GNP er mindre end 1000 og alle fra Continent fra Asia, for at få det mere udspefikerst og lave syntaxen rigtig vil din kode komme til at se sådan ud.

WHERE ( GNP < 1000 AND Continent = ‘Africa’ ) OR Continent = ‘Asia’;

Hvis du nu sider og tænker på du gerne vil have alle hvor GNP er mindre end 1000 og Continent er enten Africa eller Asia på samme tid, så skal du blodt andre lidt i din SQL så den kommer til at se sådan her ud.

WHERE GNP < 1000 AND ( Continent = ‘Africa’ OR Continent = ‘Asia’ );