在2种不同类型的数据库之间共享1个表

时间:2011-01-04 09:48:44

标签: mysql database sharing novell clarion

我遇到的问题是我想在两个不同的数据库之间同步一个表。 数据库1位于带有MySQL的XP服务器上 数据库2位于带Clarion的Novell服务器上。

是否可以在两个数据库之间共享一个表用户? 因此,当数据放入数据库1时,数据库会自动与数据库2同步。完成后,表:user在两个数据库中是一样的吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

Diederik,

您的问题不是很明确,因为我们不知道您是否有权访问源代码,或者只能在数据库级别上运行。

如果您使用Clarion来驱动这些数据库,那么您没有明确提及。我假设你是,因为你用它标记了你的帖子。

此外,您没有提到您在Novell服务器上使用的文件格式。我假设你使用的是TopSpeed文件格式 - 这里有一些关于TopSpeed文件格式的信息:大多数程序员认为它是Clarion for Windows的“原生”文件格式。它不是。 Clarion for Windows没有原生文件格式,但采用完全驱动程序驱动的方法。 Clarion Professional Developer(DOS IDE)具有原生文件格式,即Clarion .DAT格式。 Clarion for Windows可以使用提供驱动程序或ODBC驱动程序的任何文件格式,包括旧的.DAT。

如果您有权访问源代码,那么这是一个非常直接的情况。在Clarion中,您可以轻松地将不同的缓冲区指向不同的表。

                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 )                

如果您无法访问源代码,则必须编写MySQL存储过程来更新远程文件。问题是远程文件是一个TopSpeed文件,可以直接从MySQL服务器访问,因为它对MySQL一无所知。

解决此问题的一种解决方案是在MySQL服务器上使用TopSpeed ODBC驱动程序,并使MySQL SP访问ODBC驱动程序。我认为必须具有TopSpeed ODBC驱动程序,因为它允许策略逃避这种情况,并促进更好的集成。

关于MySQL SP的详细信息超出了本文的范围,也是因为我不知道MySQL SP到那个级别。

此致