do sad sam radio sa access bazom, i hteo sam da napravim manju aplikaciju i malo eksperimentisem sa malom SDF bazom.
isao sam na add new datasource
izabrao Database
pa Dataset
napravio tabele, postavio relacije.
Samo mi jedno nije jasno.
Da li u kodu opet moram da formiram konekcije, recordset-e, datasete, adaptere ili sve ovo imam kao objekte sa obzirom da sam ih formirao u samom projektu?
Nikako ne mogu da nadjem objekte ove baze koju sam formirao, reko da ne pokusavam sa konekcijom dok se ne posavetujem ovde?
mozes li mi dati prost primer - ako zamislimo da smo kreirali Dataset preko wizarda, i da u projektu imamo fajl 1.sdf kako iz koda manipulisati objektima koji sadrze te podatke?
Ili moramo u kodu deklarisati nov dataset pa ka povezati sa ovim?
postoji svuda, ako dodas folder onda tvoj_projekat.tvoj_folder, i da ga tako prozivas(npr. ako je tvoj DataSet u folderu)
Neki put ne mozes da dobijes code completition za db objekte(dole) ako nije uradjen rebuild projekta, a build moze da omane ako postoji greska u npr. DataSet.Designer.cs
Evo dva slucaja kada je sve OK:
1. kada navlacis datasource-eve na form
2. kada radis sa nekom prostom klasom koja moze da ti bude business logika
1. slucaj: imas na formu tvoj_DataSet(ref. Tvoj_DataSet), tvojatabelaBindingSource, tvojatabelaTableAdapter. Ovo se najcesce kreira automatski kada biras DataSource za neku kontrolu u WinForm aplikaciji.
NPR. Inicijalizacija podataka
private void tvojForm_Load(object sender, EventArgs e)
{
//init data
this.tvojatabelaTableAdapter.Fill(this.tvoj_DataSet.tvojatabela);
}
NPR. Snimanje podataka
private void save()
{
//update client data
try
{
tvojatabelaBindingSource.EndEdit();
NPR. citanje podataka
//tableadapter
Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter tvojatabelaTA=new Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter();
//datatable dobijanje kolekcije rezultata
Tvoj_DataSet.tvojatabelaDataTable tvojatabelaDT=tvojatabelaTA.GetData();//daj sve podatke, default select query
//kretanje kroz kolekciju rezultata
foreach (Tvoj_DataSet.tvojatabelaRow tvojRow in tvojatabelaDT)
{
int id=tvojRow.id;
string ime=tvojRow.ime;
//i tako dalje u zavsnosti koja polja si definisao u original tabeli
}
Inace rad sa bazama moze na mnogo nacina i zavisi od afiniteta, naredjenja, verzije net framework-a i/ili od nekog ne MS (3rd party) framework-a.
Ovo gore vazi za minimum .net 2.0..
hvala puno, pomoglo mi je, ono sto sam trebao da uradim je da prevucem dataset na formu, ja sam mislio da samim kreiranjem baze da ce se kreirati i objekti.
Da ne otvaram novu temu jos jedno pitanje, kada sam radio sa access bazom , radio sam preko recordset-a query ako mi treba neka vrednost.
da li postoji jednostavniji nacin da ako imam tabelu sa kolonom sifra i naziv, da dobijem naziv po datoj sifri k a da ne radim recordset i query select where.
znaci meni treba vrednost u drugoj koloni koja odgovara vrednosti recimo 112 u prvoj koloni.
nesto u fazonu dataset1.tabela1.vrativrednost(kolona1,vrednost,kolona2)
pretpostavljam da ima ali ne mogu nikako da nadjem.
U Solution Explorer-u otvori Tvoj_DataSet, nadji tvojutabelu, righ click, add query, Use SQL statements, izaberi SELECT which return single value, otkucaj query NPR.:
select naziv
from tvojatabela
where (sifra=@sifra_parametar)
kazes da ti se funkcija zove NPR. getNazivBySifra i to je sta treba u DatSetu.
Kod tebe u klasi:
Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter tvojatabelaTA=new Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter();
string naziv= tvojatabelaTA.getNazivBySifra(sifra);//sifru kupis od nekud npr. parametar ili iz win kontrole
Vidim da si napisao da si radio sa access bazom, a to je upravo ono sto meni treba pa ako ti nije problem da pokusas da mi pomognes. Naime, pokusavam u povezem c++ sa bazom podataka koristeci Visual studio 2010. Napravim bazu u acces-u, kliknem add new data source i u prozoru za odabir mi se ne pojavljuje nijedan tip baze podataka. Gledao sam ogroman broj tutorial-a i sve mi se cini lako ali jednostavno nemam da izaberm database kao sto svi ostali imaju vec mi se pojavi sledece: http://imageshack.us/f/820/studioz.png/ (moj screenshot). Zna li neko ocemu se radi i hvala unaprijed.