Besplatna biblioteka za pristup MS SQL Serveru

Besplatna biblioteka za pristup MS SQL Serveru

offline
  • cuoea 
  • Novi MyCity građanin
  • Pridružio: 12 Apr 2005
  • Poruke: 6

Pozdrav svima.

Zna li neko za biblioteku koja implementira pristup MS Sql Serveru, a da nije ODBC zasnovana.

Probao sam ADO kroz objekte iz C++ Buildera, ali se ne ponasaju lepo u multi-threaded okruzenju (pretpostavljam zbog cele sarade sa VCL-om).

Ako nista drugo, uvek mogu da koristim izvorne ADO objekte, ali nisam bas odusevljen tom idejom. BCB ima prilicno problema sa #import naredbom.

Sve primedbe su dobrodosle:)



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

a da koristis ADO u CriticalSection?
onda ne moze da brlja...



offline
  • cuoea 
  • Novi MyCity građanin
  • Pridružio: 12 Apr 2005
  • Poruke: 6

Hvala na savetu. Ipak mi nije potrebna niti implementacija kriticnih sekcija, niti druga biblioteka.

Tvoj savet me je naveo da jos jednom pogledam kako sam zapravo koristio originalne objekte, i onda sam video da nisam probao drugi nacin upotrebe interfejsa koji mi je dat (a bio sam ubedjen da sam to vec uradio i da nije 'telo).

U svakom slucaju, puno ti hvala na "okidacu".

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

a tu nije nikakva posebna implementacija potrebna, svega 4 funkcije uvodis za CS - registrovanje/odregistrovanje CS-a, i ulaz/izlaz u CS...

evo ti moja gotova portabilna klasa:

   critical_section :: critical_section ()    {       this->init (NULL);       entered=0;    }    critical_section :: ~critical_section ()    {       this->destroy ();    }    int critical_section :: init (void *mutexattr)    {       #ifdef _WIN32          InitializeCriticalSection(&cs);          return 1;       #else          if ( pthread_mutex_init(&cs, (const pthread_mutexattr_t *)mutexattr) == 0)             return 1;          else             return 0;       #endif    }    int critical_section :: destroy ()    {       #ifdef _WIN32          DeleteCriticalSection(&cs);          return 1;       #else          if ( pthread_mutex_destroy(&cs) == 0)             return 1;          else             return 0;       #endif    }    int critical_section :: try_enter ()    {       #ifdef _WIN32          if (TryEnterCriticalSection(&cs)!=0)          {             entered=1;             return 1;          }          else             return 0;       #else          if (pthread_mutex_trylock(&cs) == 0)          {             entered=1;             return 1;          }          else             return 0;       #endif    }    int critical_section :: enter ()    {       #ifdef _WIN32          EnterCriticalSection(&cs);          entered=1;          return 1;       #else          if (pthread_mutex_lock(&cs) == 0)          {             entered=1;             return 1;          }          else             return 0;       #endif    }    int critical_section :: leave ()    {       #ifdef _WIN32          LeaveCriticalSection(&cs);          entered=0;          return 1;       #else          if (pthread_mutex_unlock(&cs) == 0)          {             entered=0;             return 1;          }          else return 0;       #endif    }

offline
  • Nom  Male
  • Građanin
  • Pridružio: 17 Nov 2004
  • Poruke: 168
  • Gde živiš: Shanghai, China

MySQL ++

Potrazi, radi bez ikakvih problem (koristio sam i shljaka, jedino morash da kotristish libmysql.dll od verzije instaliranog mysql servisa, i neke komande su 'zastarele' i koriste se neke druge, na pr. ne koristis xxx->connect(..) vec xxx->real_connect(...) i slicno.

Pozdrav

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

on trazi za MSSQL, a ne za MySQL Smile

offline
  • cuoea 
  • Novi MyCity građanin
  • Pridružio: 12 Apr 2005
  • Poruke: 6

Hvala na primeru...

Posto sam resio problem koji me je mucio red je i da podelim resenje.

Dakle, problem je bio u pristupu bazi kroz ADO komponente Borland C++ Buildera 5, i sastojao se u tome da koriscenje istih komponenti lepo funkcionise u single-threaded okruzenju.

U mom slucaju, pisao sam servis ciji jedan thread treba da pristupa MSSQL bazi. Iz nekog razloga, koriscenje ovih komponenti besprekorno radi, ali pod uslovom da kreiram jedan objekat u glavnom threadu servisa koji ce konstantno drzati jednu konekciju ka bazi otvorenu. Jedino tada komponente koje dinamicki alociram u thread-u koji zaista treba da pristupa bazi rade kako treba.

Iskreno, nemam predstavu da li je to neki bag u kompajleru/objektima, ili to tako treba da se radi. Jedino korisno sto se tice datih komponenti u Borlandovom help-u potencira da su thread-safe napisane, ali da svi drugi data-aware objekti (koji se mahom koriste u korisnickim aplikacijama) nisu. Ali sve to ne objasnjava ovakvo ponasanje krajnjeg programa...

Ko je trenutno na forumu
 

Ukupno su 996 korisnika na forumu :: 45 registrovanih, 5 sakrivenih i 946 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Battlehammer, bigfoot, bokisha253, Boris BM, Brana01, BRATORIII, cinoeye, crnitrn, d bos, darionis, darkojbn, dejoglina, doktor1964, dushan, Džordžino, FOX, jackreacher011011, Još malo pa deda, Karla, laki_bb, Leonov, loon123, mercedesamg, Mi lao shu, mile23, milutin134, mnn2, nelsa, nikoli_ca, pacika, Parker, Pohovani_00, powSrb, repac, royst33, suton, Toper, Trpe Grozni, vandrej, vathra, vukovi, ZetaMan, Zoca, 1107