╰☆╮温馨提示!!!╰☆╮
本站域名:www.108sj.com (很容易记哦)
首 页 | 精品画廊 | 平面设计 | 设计学院 | 电脑知识 | 网页制作 | 编程 | 模板 | 酷站 | 矢量 | PNG | GIF | PSD | 源码 | FLASH | 背景 | PS笔刷 | 字体 | 壁纸 | 办公 | 范文 | 论坛
您现在的位置: 108设计网 >> 网络编程 >> 数据库编程技术 >> 网络编程正文

网络编程
ASP编程
ASP.NET编程
PHP编程
JSP编程
VB编程
C#编程
CGI编程
数据库编程
xml编程
Delphi编程
数据库acc转sql的方法

作者:佚名    网络编程来源:网络    点击数:    更新时间:2007-12-14
这几天一连三个程序 由ac转sql,总结了一下这三个程序转换中遇到的问题,归纳了以下注意点

自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号

所有的默认值都丢失了。主要是数字类型和日期类型

所有now(),time(),date()要改成getdate()

所有datediff(’d’, time1, time2)要改成datediff(day, time1, time2)

所有datediff(’ww’, time1, time2)要改成datediff(week, time1, time2)

所有datediff(’d’, time1, time2)要改成datediff(day, time1, time2)

在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字

在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="&now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。

日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
    SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功

isnull(rowname)要改成rowname = null

CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能
显示不完整

备注类型要通过cast(column as varchar)来使用

true/false类型不能使用,要变为1/0

对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用

在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"&变量名&"#",在mssql中是不行的,他的语法是“select * from aaaa while time=’"&变量名&"’"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)

原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”

有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过(遇到的情况,提示为:
Microsoft OLE DB Provider for SQL Server 错误 ’80040e38’  

乐观并发检查失败。已在此游标之外修改了该行。  

/Admin_ClassOrder.asp,行 164 )

access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"



1.mdb中的ID到了Access会变成普通的int,要重新设置为“标识”。
2.SQL语句中的now()要改成getdate()。
3.SQL语句中Like后面字符串的通配符'*'要改成'%'。
4、access表内数据类型"是/否",到了sql server的表内就是 bit (not null)
5、access查询通过cdate构造日期,sql server内是convert(datetime,...)
6. 在sql server 里,就我使用的经验来看: '2004-5-29' =
convert(datetime,'2004-5-29')
7.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用
decimal。
8.所有的默认值都丢失了。主要是数字类型和日期类型。
9.所有now(),time(),date()要改成getdate()。
10.所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
11.有可能一些true/false类型不能使用,要变为1/0。
12.备注类型要通过cast(column as varchar)来使用。
13.CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能
显示不完整。
14.isnull(rowname)要改成rowname = null
15.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!
16.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。
17.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".
18.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
19.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。
20:最好在有可能和系统关键字的地方使用“[”和“]”将他包围起来,以避免在移植过程中出现的运行错误问题
热门素材下载
本栏推荐
  • 此栏目下没有推荐网络编程
本栏热门
  • 此栏目下没有热点网络编程
相关文章
关于我们 | 版权声明 | 广告服务 | 合作伙伴 | 友情链接 | 联系我们 | 使用帮助 | 网站地图
Copyright 2006-2008 www.108sj.com All rights reserved.Best view by IE6.x 1024*768 版权所有:108设计网(www.108sj.com)
备案序号:粤ICP备06033717号 联系QQ:149161686(限广告与网站合作)