PDA

View Full Version : [C++]Connesione ad un database MSSQL


4ndr34s
14-11-2009, 05:50
Salve a tutti, vorrei creare un programma che si connette al mio db ed esegue una semplice query, ho provato a seguire questo esempio :/*

ESEMPIO 2 - INSERT, DELETE, UPDATE

Prima di utilizzare questo codice

1) Creare un database con ACCESS e chiamarlo "mio_database"
creare una tabella e chiamarla "mia_tabella"
inserire nella tabella 3 campi di tipo testo
e chiamarli: "nome", "cognome", "telefono".

2) La prima riga del codice, importa la libreria ADO
"msado15.dll", indispensabile per l'esecuzione
del programma.

*/

#import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","EndOfFile")

#include <iostream>
#include <cstdio>
using namespace std;

int main(int argc, char* argv[]){

char queryString[200], nome[20]="pinco", cognome[20]="pallino", telefono[15]="0622222222";

// Inizializzo la libreria COM prima di utilizzare le sue funzioni.
CoInitialize(NULL);

// Costrutto 'try - catch' se si verifica un eccezione (exception) con 'catch' la "catturo"
try{

// Dichiaro un puntatore alla connessione ADO
_ConnectionPtr pCnn("ADODB.Connection");

// Stringa di connessione al database ACCESS (DSN-LESS)
_bstr_t strCnn("DRIVER={Microsoft Access Driver (*.mdb)};UID=;PWD=;DBQ=mio_database.mdb");

// Stringa di connessione con DSN Attivo, valida con tutti i database
// _bstr_t strCnn("Provider=MSDASQL; Data Source=mio_database; Database=mio_database; User Id=; Password=; Security Info=True");

// Apro la connessione
pCnn->Open(strCnn, "", "", adConnectUnspecified);

// Inserisco nella stringa 'queryString' la Query Sql (INSERT)
sprintf(queryString,"INSERT INTO mia_tabella (nome,cognome,telefono) VALUES ('%s','%s','%s');",nome,cognome,telefono);

// Inserisco nella stringa 'queryString' la Query Sql (DELETE)
// sprintf(queryString,"DELETE FROM mia_tabella WHERE nome = '%s' AND cognome = '%s';",nome,cognome);

// Inserisco nella stringa 'queryString' la Query Sql (UPDATE)
// sprintf(queryString,"UPDATE mia_tabella SET telefono = '0244444444' WHERE nome = '%s' AND cognome = '%s';",nome,cognome);

// Eseguo la Query
pCnn->Execute(queryString, NULL, adCmdText);

// Chiudo la connessione al database
pCnn->Close();

cout<<"Operazione eseguita con successo"<<endl;

}

// Se si verifica un errore lo catturo
catch(_com_error &exception){

// ... E lo visualizzo a video (con tanto di descrizione)
cout<<"Errore: "<<(char*) exception.Description()<<endl;

}

// libero la memoria utilizzata da COM
CoUninitialize();

return(0);

}

Ho Sul mio server un DSN di sistema perņ appena avvio il programma compilato crasha sostituendo la scritta in neretto con questa driver={SQL Server}; Server=NomeServer; Database=NomeDB; Uid=sa; Pwd=sa;
ma niente da fare, sapreste aiutarmi?

4ndr34s
15-11-2009, 15:20
Bump!