Kolega i ja smo napravili za nase, za sada, male potrebe mini recordset po ugledu na adodb (php), tj. implemenirali smo postojeci kod (ovde), koji koristi libmysql.dll.
To je bilo neophodno jer direktno nije moguce koristiti libmysql.
Mozete slobodno probati nas dll, mada vam ne bih preporucio da ga koristite u komercijalne i ozbiljnije svrhe zato sto je u alfa fazi izrade i nije testirano na kompleksnijim problemima.
Jos uvek nisam siguran da li cemo nastaviti sa razvojem programa, ali bih ipak voleo da cujem (citam) utiske i sl.
Kako se koristi:
- MBClassMySql.dll je okacen na poruku
- libmysql.dll mozete skinuti ovde
- MBClassMySQL.dll dodate kao referencu
- libmysql.dll mora biti lociran u istom direktorijumu gde i (u debug ili relase dir-u) MBClassMySQL.dll
U kodu:
1. deklarisanje klase (klasika):
- u VB-u
private MojRecordSet as new MBClassMySql()
- u C#
private MBClassMySql MojRecordSet = new MBClassMySql();
2. konekcija na bazu ide ovako (dalje samo C# kod, mislim da ce se VB.NET programeri snaci):
MojRecordSet.Connect("localhost","root","sifra","TestBaza");
MojRecordSet.Disconnect();
//ako nije zatvorena konekcija, a izadje iz zone vazenja javlja gresku, naravno
(naravno radili smo error raising i ili vraca true or false)
3. SELECT upit
MojRecordSet.Select("SELECT * FROM TestTabela");
4. Citanje i setanje kroz recordset
for (int i=1; i <= MojRecordSet.Count; i++)
{
MojRecordSet.Item("Polje1",i); //za sada vraca samo string
MojRecordSet.Item(2,i); //ili drugu kolonu (field)
}
// moze i setnja kroz RS sa
MojRecordSet.MoveFirst();
MojRecordSet.MoveLast();
MojRecordSet.MoveNext();
MojRecordSet.Move(5);
int trenutniRekord = MojRecordSet.CurrentRecord;
// a citanje trenutnog podatka ide ovako (odnosno razne kombinacije)
MojRecordSet.Item("Polje1"); // po nazivu
MojRecordSet.Item(2); // ili drugu kolonu (fields)
5. INSERT, DELETE, UPDATE ide kroz Query +transakcije
MojRecordSet.Query("INSERT INTO...",false); //ovaj bool na kraju znaci da ide bez transakcije (ili obrnuto)
// taj deo jos treba doraditi, ali radi i ovako, naravno samo na tipovima tabela koje podrzavaju transakcije
// transakcije za vise upita
MojRecordSet.BeginTransaction();
// ovde vise query-a (false, naravno)
MojRecordSet.EndTransaction(); // vraca boolean
// za sada nedostaje rollback, ali on to radi sam u slucaju greske
Mislim da bi to bilo dovoljno za sada.
pozdrav