[ MarkoBalkan @ 28.01.2009. 10:42 ] @
| koristim mysql i borland builder c++ 2009.
našao sam primjere za povezivanje na bazu ali preko gotovih komponenti (SQLconnection, SQLQuery itd...).
dali netko ima primjer kao se ručno spojiti na bazu i prikazati u tablici podatke?
ne znam zašto borland gura te visualne komponente, kao i MS.
to je dobro ukoliko treba nešto na brzinu prikazati u tablici i za jednostavnije stvari.
|
[ X Files @ 28.01.2009. 10:50 ] @
Ako znas kako da se povezes na bazu preko vizualnih komponenti, onda nisi daleko i od 'rucnog' nacina. Sve u BCB se moze resiti i dinamicki:
Code:
TNekaKomponenta *Pokazivac = new TNekaKomponenta( this /* ili neki drugi argumenti */ );
// ...
Pokazivac->NekaOsobina1=...
Pokazivac->NekaOsobina2=...
Pokazivac->ConnectionString =...
// ...
Pokazivac->Dogadjaj1 = MojDogadjaj1; // <--- funkcija koja ima iste argumente i povratnu vrednost kao i dogadjaj komponente
// ...
Pokazivac->Open();
// ...
delete *Pokazivac;
Probaj, pa javi ako zapne...
[ X Files @ 28.01.2009. 11:06 ] @
Da dodam, vizuelnim kontrolama (gridovi i sl), da bi bile vidljive treba da dodelis i Parent-a.
Pokazivac->Parent = Form1; // <--- Pridruženo formi
Pokazivac->Parent = Panel1; // <--- Pridruženo Panelu
Pokazivac->Parent = TabSheet1; // <--- Pridruženo nekoj kartici
[ MarkoBalkan @ 28.01.2009. 12:01 ] @
Code:
String st;
st="Server=localhost;Database=proba;User name=root;Password=123;";
TSQLConnection *ts=new TSQLConnection(this);
TSQLQuery *tq=new TSQLQuery(this);
TSQLDataSet *td;
ts->DriverName="MySql";
ts->dodijeliti string za konekciju ;
tq->SQLConnection=ts;
tq-> SQL->ToString()= "select * from prva";
td->SQLConnection=ts;
ts->Open();
ts->Close();
ne znam dalje kako povezati query, konekciju, napuniti dataset i dataset prikazati u tablici tj.
DBGrid1->DataSource=td, kao što je kod .net-a
konekcija, dataadapter, datatable ili dataset.
jedino tablicu imam na formi
mislim da bude nešto od mene.
[Ovu poruku je menjao MarkoBalkan dana 28.01.2009. u 13:32 GMT+1]
[ MarkoBalkan @ 28.01.2009. 12:48 ] @
kad stavim query komponentu na formu i probam se spojiti javi grešku
[ X Files @ 28.01.2009. 17:02 ] @
Ok, evo napravio sam parce koda koje treba da pokaze kako se dinamicki kreiraju sve komponente i sta se s cime spaja. Sve je u dodatku (za BCB2009 koji koristis).
Primer je za pristup i pretragu lokalne MDB baze, koja treba da bude tamo gde je i EXE, ali princip je potpuno isti i za uspostavljanje drugih konekcija.
SCREENSHOT:
--- H ---
Code:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
TPanel *pPanel;
TEdit *pEdit;
void __fastcall Moj_pEditChange(TObject *Sender);
void __fastcall Moj_pFormActivate(TObject *Sender);
TADOConnection *pADOConnection;
TADOQuery *pADOQuery;
TDataSource *pDataSource;
TDBGrid *pDBGrid;
TDBNavigator *pDBNavigator;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
--- CPP ---
Code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// Forma
Height = 600;
Width = 800;
Position = poDesktopCenter;
OnActivate = Moj_pFormActivate;
// Panel
pPanel = new TPanel( this );
pPanel->Parent = this;
pPanel->Width = 40;
pPanel->Align = alTop;
// Edit na panelu
pEdit = new TEdit( this );
pEdit->Parent = pPanel;
pEdit->Left = 8;
pEdit->Top = 10;
pEdit->OnChange = Moj_pEditChange;
// Navigator na panelu
pDBNavigator = new TDBNavigator( this );
pDBNavigator->Parent = pPanel;
pDBNavigator->Left = pEdit->Left + pEdit->Width + 8;
pDBNavigator->Top = 8;
// Grid na formi
pDBGrid = new TDBGrid( this );
pDBGrid->Parent = this;
pDBGrid->Align = alClient;
// Konekcija na bazu
pADOConnection = new TADOConnection( this );
pADOConnection->ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
ExtractFilePath( Application->ExeName )+
"baza.mdb;Persist Security Info=False";
pADOConnection->LoginPrompt = false;
pADOConnection->Connected = true;
// Upit
pADOQuery = new TADOQuery( this );
pADOQuery->Connection = pADOConnection;
// Veza izmenju podataka i vizuelnih kontrola
pDataSource = new TDataSource( this );
pDataSource->DataSet = pADOQuery;
pDBGrid->DataSource = pDataSource;
pDBNavigator->DataSource = pDataSource;
}
__fastcall TForm1::~TForm1()
{
// Ovo direktno oslobadjanje nije neophddno, jer se u VCL...
// ... objekti kojima je postavljen Owner ili Parent unistavaju automatski
// Ako se ipak oslobadja rucno, treba voditi racuna o redosledu
if ( pEdit )
delete pEdit;
if ( pDBNavigator )
delete pDBNavigator;
if ( pPanel )
delete pPanel;
if ( pDBGrid )
delete pDBGrid;
if ( pADOQuery )
delete pADOQuery;
if ( pDataSource )
delete pDataSource;
if ( pADOConnection )
delete pADOConnection;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Moj_pFormActivate(TObject *Sender)
{
Moj_pEditChange( this );
}
void __fastcall TForm1::Moj_pEditChange(TObject *Sender)
{
pADOQuery->Close();
pADOQuery->SQL->Clear();
UnicodeString Upit = "SELECT * FROM rasa WHERE naziv_lok LIKE '%" + pEdit->Text + "%'";
pADOQuery->SQL->Add( Upit );
pADOQuery->Open();
pDBGrid->Columns->Items[0]->Width = 30*8;
pDBGrid->Columns->Items[1]->Width = 30*8;
}
[ MarkoBalkan @ 28.01.2009. 17:50 ] @
puno zahvaljujem, sve radi.
samo da riješim još ovo sa myslq-om, nešto me zajebava.
[ X Files @ 28.01.2009. 17:57 ] @
Par saveta:
- Sve pokazivace na buduce objekte, koje ces dinamicki kreirati, stavi u H fajl, recimo u private ili public sekciju
- Kreiranje objekata mozes uraditi u konstruktoru
- Inicijalizaciju pocetnih parametara takodje u konstruktoru
- Unistavanje nije potrebno, vec sam objasnio
- Vodi racuna kog su tipa Osobine (Properties) koje je potrebno vezati za druge objekte, jer ti to upravo govori STA treba vezati.
[ MarkoBalkan @ 28.01.2009. 18:09 ] @
a ako se spajam na mysql , onda mu moram dodijelit ime drivera i ostalo šta treba?
[ X Files @ 28.01.2009. 18:25 ] @
Ako imas kod koji radi (podeseno u dizajneru), prvo pribelezi sta je sve menjano (podesavano) na svakom objektu u sistemu. Sve to treba preslikati u run-time verziju.
Ako je DRAJVER podesen u designtime-u, naravno da ga treba podesiti i u run-time-u.
[ X Files @ 28.01.2009. 18:28 ] @
[ MarkoBalkan @ 28.01.2009. 18:32 ] @
imam to.to sam baš jučer počeo malo proučavati.
koliko je BCB zastupljen u praksi?
tj. koliko se koristi?
[ X Files @ 28.01.2009. 18:40 ] @
Slabo (spram kvaliteta, po mom misljenju).
[ MarkoBalkan @ 28.01.2009. 18:54 ] @
Citat: X Files: Slabo (spram kvaliteta, po mom misljenju).
ne kužim ovo!
nije kvalitetan ili?
[ X Files @ 28.01.2009. 19:25 ] @
Ma ne... BCB je po mom misljenju odlican, pre svega zbog VCL biblioteke, ali jednostavno nisu uspeli da se prosire po trzistu iz puno razloga, da sad ne polemisemo o tome...
[ MarkoBalkan @ 28.01.2009. 19:36 ] @
čuo sam da postoji kolekcija vcl biblioteka za delphi koje su skupili programeri. 2 ili 3 cd-a ako ne i više
vjerojatno bi radilo i s bcb-om.
pa me zanima ako netko zna šta više o tome?
[ X Files @ 28.01.2009. 19:46 ] @
Postoji hiljade na hiljade gotovih 3rd party komponenti za Delphi i BCB. Mnoge su besplatne ali mnoge su i komercijalne.
Problem je sto ne postoji potpuna kompatibilnost izmedju Delphi-ja i BCB-a, cak ne postoji ni izmedju razlicitih verzija istog proizvoda.
Koliko sam u toku, u CodeGear-u rade na tome da se uspostavi 100% kompatibilnost izmedju Delphi i BCB komponenti. To ce biti ono pravo.
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|