Hi Mindaugas,

can you add to svn?

Anybody have different proposal?


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mindaugas 
Kavaliauskas
Sent: Monday, October 13, 2008 1:00 PM
To: Harbour Project Main Developer List.
Subject: Re: [Harbour] A standard for the Harbour's SQL libs

Hi,


Przemyslaw Czerpak wrote:
> Before you will started the work then I suggest you to look at CLIP 
> project - you will find in SF.

I've looked to CLIP code. The basic idea (Clip's SQL interface gives 
possibility to access SQL databases, but are not plug-and-play tool for DBF to 
SQL migration) seams to be the same. I also see a lot of similarities in 
implementation. Of cause some differences exists, the main differences are:

1) CLIP uses different function names to RDD and SQL. For example, it uses 
SQLGOBOTTOM() instead of DBGOBOTTOM(). My implementation is uses RDD interface. 
Some new SQL functionality is obtained using RDDINFO() call. For example, I use:
    RDDINFO(RDDI_EXECUTE, "DROP TABLE something") instead of
    SQLEXECUTE("DROP TABLE something")
but these SQL*() functions can be easy implemented. Actually, the same 
situation is in DBF implementation. You can use
DBORDERINFO(DBOI_ORDERCOUNT) or ORDCOUNT().

2) I guess CLIP does not have possibility to access field values using names, 
i.e.
   FIELD NAME
   ? NAME
is impossible, the only way to get field value is:
   ? SQLGETVALUE(1)  // 1 is field number

I found it a drawback. Using native Clipper syntax support for accessing field 
is a big benefit, it make code much more shorter and readable.


Of cause, there are some implementation differences. CLIP has prepare() 
method, but I know MySQL the best from SQL API's and it did not use 
prepare function, so I haven't included it into SQL database driver 
method table. The similar situation is for start(), commit(), 
rollback(). In MySQL you need to do execute() call with parameter 
"commit" or "rollback". I have not added BLOB suport yet.


The few problems have to be solved writing RDD for SQL access. One is 
NULL/NIL question? Another is: should we PAD field values for SQL RDD to 
be compatible with DBF RDD's?


I attach some of my code (only MySQL database driver) is included:
sqlbase.c - basic RDD for interfacing with SQL database driver;
sqlmix.c - this RDD implements indexes using B-trees in memory.
   It is inherited from SQLBASE;
mysqldd.c - SQL database driver for MySQL;
hbsqldd.h - include files for all above. Some defines should be moved
   to should dbinfo.ch;
test1.prg - test code.

I hope you'll be able to compile it.


Best regards,
Mindaugas

_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to