PDA

Visualizza la versione completa : [C] SQL Embedded


starcraftworld
23-12-2008, 01:03
Come si effettua la connessione ad un database e l'esecuzione di una query in SQL Embedded?

MacApp
23-12-2008, 09:31
Dipende dal database.

starcraftworld
23-12-2008, 09:46
Uso MySQL

MacApp
23-12-2008, 11:17
http://dev.mysql.com/doc/refman/5.1/en/libmysqld-example.html

starcraftworld
23-12-2008, 13:44
Ho trovato un esempio su un libro di Basi di Dati:


#include <stdlib.h>

int main () {
exec sql begin declare section;
char *NomeDip="Manutenzione";
char *CittaDip="Pisa";
int numeroDip=20;
exec sql end declare section;
exec sql connect to utente@librobd;
if (sqlca.sqlcode!=0)
printf ("Connessione al db non riuscita";
else {
exec sql insert into Dipartimento
values(:NomeDip,:CittaDip,:NumeroDip);
exec sql disconnect all;
}
}

Questo è SQL embedded giusto?

starcraftworld
23-12-2008, 16:05
up

pallinopinco
23-12-2008, 16:37
Bisogna fare un po' di chiarezza, probabilmente ti riferisci a Embedded SQL (richiede un apposito preprocessore) e non a SQL Embedded (termine generico, nonché improprio, che indica un qualsiasi DBMS di tipo "embedded").

Se ti riferisci a Embedded SQL allora hai bisogno di moduli specifici per il tuo DBMS.

Indica il DBMS utilizzato ed il tuo compilatore di riferimento.

starcraftworld
23-12-2008, 16:51
DBMS: MySQL
Compilatore: Mingw (IDE:Dev-C++)

pallinopinco
23-12-2008, 17:00
Leggi questo articolo (http://caixamagica.telepac.pt/pub/mysql/tech-resources/articles/precompiler-for-embedded-sql.html).

starcraftworld
23-12-2008, 19:33
Non trovo la connessione al database...



#include <stdlib.h>
#include <stdio.h>

/*----------------------------------------------------------------*/
EXEC SQL INCLUDE SQLCA;
short sqlcode;

EXEC SQL BEGIN DECLARE SECTION;
int host_a;
double host_b;
char host_c;
EXEC SQL END DECLARE SECTION;

EXEC SQL DECLARE csr1 CURSOR FOR
SELECT a, b, c
FROM table1
WHERE x = :hostvar1;

/*----------------------------------------------------------------*/
void main (void)
{
hostvar1 = 42;

EXEC SQL OPEN csr1;
if (sqlcode < 0)
exit(0);

while (rc >= 0 && rc != 100)
{
EXEC SQL FETCH csr1 INTO :host_a, :host_b, :host_c;
printf("Fetch %d, %lf, %s\n", host_a, host_b, host_c);
}

EXEC SQL CLOSE csr1;
}

Loading