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 1219 korisnika na forumu :: 41 registrovanih, 5 sakrivenih i 1173 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: _Rade, AK - 230, AMCXXL, babaroga, BORUTUS, darcaud, dragoljub11987, Duh sa sekirom, Excalibur13, FOX, GenZee, Georgius, havoc995, hooraay, ILGromovnik, Istman, krkalon, Kruger, Krusarac, Krvava Devetka, ladro, lord sir giga, Lubica, manda87, Marko Marković, mercedesamg, NoOneEver Dreams, opt1, pera bager, samsung, Sančo, sombrero, theNedjeljko, tubular, vasa.93, VJ, Vlad000, voja64, VP6919, vukovi, zdrebac