Mysql Coldfusion服务器到sql server的映射
我有一个连接到MySQL数据库的ColdFusion服务器。现在,我正在将数据库更改为现有的MSSql服务器。。MSSql服务器的数据库与MySQL相似,但表名和列名不同。我的问题是,如何在不更改ColdFusion代码的情况下将新的MSSql服务器映射到ColdFusion服务器。。表示不更改ColdFusion代码中的表名和列名Mysql Coldfusion服务器到sql server的映射,mysql,sql-server,database,coldfusion,Mysql,Sql Server,Database,Coldfusion,我有一个连接到MySQL数据库的ColdFusion服务器。现在,我正在将数据库更改为现有的MSSql服务器。。MSSql服务器的数据库与MySQL相似,但表名和列名不同。我的问题是,如何在不更改ColdFusion代码的情况下将新的MSSql服务器映射到ColdFusion服务器。。表示不更改ColdFusion代码中的表名和列名 提前感谢如果模式不同(不同的列名和列数),那么您可能别无选择,只能重构CF代码以反映新的MSSQL模式。如果从一个数据库到下一个数据库的表名和列名之间存在一对一的关
提前感谢如果模式不同(不同的列名和列数),那么您可能别无选择,只能重构CF代码以反映新的MSSQL模式。如果从一个数据库到下一个数据库的表名和列名之间存在一对一的关系,则可以使用视图,但这会造成非常混乱的开发环境。再一次。。。每个表必须“匹配”列数和数据类型。范例
Old table "users"
firstname, lastname address
New table "tblUsers"
fname, lname, addr
鉴于上述模式,您的CF代码中可能有一个如下所示的查询:
<cfquery name="getUsers" datasource="blah">
SELECT firstname, lastname, address
</cfquery>
那么你的代码就可以工作了。我也不推荐这样做。您最好的做法是修改模式以反映您的代码,或者重构代码以针对新模式工作。但从技术上讲,它确实回答了您的问题:)除非您已经在使用ORM,否则CF中没有方便的函数或映射机制允许您这样做。可能会在驱动程序级别进行一些操作,或者使用创建sql字符串的java代码在那里进行文本解析,但这超出了我的专业领域
不过,我的猜测是,您在整个应用程序中分散了许多查询,因此在重做所有查询的任务时会感到胆怯。就我个人而言,我至少会将这个应用程序的数据访问重构成一个或多个.cfc。即使您只需将每个查询包装成一个函数调用并用函数调用替换cfquery代码,也可以将所有数据库调用整合到一个位置,从而可以更轻松地进行更改。根据经验,视图的名称与表名相同(这是在不接触CF代码的情况下完成此任务所必须做的),对任何未来的开发人员来说都是一个真正的难题。它还阻止任何其他代码访问原始表,而原始表必须重命名。使用sql View是一个不错的选择,但在需要插入和更新查询时该怎么办。这更复杂…@cfde-从技术上讲,您可以在一个简单的视图上运行insert/update命令。虽然有一些限制。但是,我同意从长远来看,修改模式是更明智的做法。使用ORM是一个不错的选择,但我需要做的是在不改变代码的情况下做一些事情。。
CREATE VIEW [dbo].[Users]
AS
SELECT u.fname AS firstname,
u.lname AS lastname
u.addr AS address
FROM dbo.tblusers