开发者

Share 1 table between 2 different types of databases

The problem that I have is that I want to synchronize one table between two different databases. Database 1 is on a XP server with MySQL Database 2 is on a Novell server with Clarion.

Is it possible to share one table users between the two databases? So when data is put in database 1, the database automatically synchornize with database 2. When this is done the table: user is in both databas开发者_运维知识库es the same?

Thanks in advance!


Diederik,

Your question isn't very clear in that we don't know if you have access to the source code or can only operate on a database level.

You didn't mention clearly if you're using Clarion to drive those databases. I'm assuming you are, since you tagged your post with it.

Also, you didn't mention which file format you're using at the Novell server. I'm assuming you are using the TopSpeed file format - here a bit of information about the TopSpeed file format: most programmers think it is the "native" file format for Clarion for Windows. It is not. Clarion for Windows doesn't have such thing as a native file format, but employs a totally driver driven approach. Clarion Professional Developer (a DOS IDE) had a native file format, which was the Clarion .DAT format. Clarion for Windows can use whatever file format that offers a driver or ODBC driver, including the old .DAT.

If you have access to the source code, then it is a pretty straight situation. In Clarion you can easily have different buffers pointing to different tables.

                PROGRAM

            MAP
            END

szConnMySQL     CSTRING( 256 )

users_mysql     FILE, DRIVER( 'ODBC' ), OWNER( szConnMySQL ), NAME( 'users' )        
RECORD            RERCORD                                                            
id                  LONG                                                             
name                STRING( 20 )                                                     
                  END
                END

users_tps       FILE, DRIVER( 'TopSpeed' ), NAME( 'users' )        
RECORD            RECORD                                           
name                STRING( 20 )                                   
id                  LONG                                           
                  END                                                
                END


            CODE

            szConnMySQL = 'Driver={{MySQL ODBC 3.51 Driver};' & |
              'Server=myServerAddress;Database=myDataBase;User=myUsername;' & |
              'Password=myPassword;Option=3;'

            OPEN( users_mysql, 42h )
            OPEN( users_tps, 42h )

            users_mysql.id = 1
            users_mysql.name = 'GUSTAVO PINSARD'
            ADD( users_mysql )
            IF NOT ERRORCODE()
              users_tps.RECORD :=: users_mysql.RECORD
              ADD( users_tps )

            ELSE
              ! Do your thing
            END

            CLOSE( users_mysql )
            CLOSE( users_tps )                

If you don't have access to source code, then you'll have to write a MySQL stored procedure to update the remote file. The problem is that the remote file, being a TopSpeed file, would bot be directly accessible from the MySQL server, since it, MySQL, doesn't know anything about it.

One solution to overcome this is by using the TopSpeed ODBC driver at the MySQL server, and having the MySQL SP access the ODBC driver. I consider the TopSpeed ODBC driver a must have, because it allows for a strategy to escape such situations, and promote a better integration.

Details on the MySQL SP are out of the scope of this post, also because I don't know MySQL SPs to that level.

Regards

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜