欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    ACCESS和SQL语法之ASP比较.docx

    • 资源ID:29947511       资源大小:33.07KB        全文页数:17页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ACCESS和SQL语法之ASP比较.docx

    1、ACCESS和SQL语法之ASP比较Access与Sql Server之ASP代码比较后台数据库: Microsoft Access 与 Microsoft Sql Server 更换之后,ASP代码应注意要修改的一些地方: 一连接问题(举例) Microsoft Access constr = DBQ=c:dataclwz.mdb; DRIVER=Microsoft Access Driver (*.mdb) Microsoft Sql Server constr = DRIVER=SQL Server;SERVER=host;DATABASE=mydata;uid=sa;pwd= 二相似函

    2、数(举例) 1DATEDIFF(datepart, startdate, enddate) 其中“datepart”参数可选项如下: 设置 描述 Microsoft Access 年 yyyy 季度 q 月 m 一年的日数 y 日 d 一周的日数 w 周 ww 小时 h 分钟 n 秒 s Microsoft Sql Server year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww hour hh minute mi, n second ss, s millisecond ms - 基本上差不

    3、多,但注意的是在写的时候, Microsoft Access要加引号,如:datediff(d,enddate,2004/08/01) Microsoft Sql Server则不需要,如:datediff(d,enddate,2004/08/01) 2Microsoft Access中可用如cstr等转数据类型函数,而 Microsoft Sql Server中则用convert或cast函数,如: convert(varchar,amount)等。 3Microsoft Sql Server 取当前时间用getdate等等. 三语句 Microsoft Sql Server 可以用 CAS

    4、E WHEN THEN WHEN THEN . ELSE END 语句,而 Microsoft Access 不支持。 Microsoft Access也不支持between语句 Microsoft Sql Server则可以这样写: date between date1 and date2 四查询表 Microsoft Sql Server 可三个及以上表join查询,而 Microsoft Access 好像只能两个表联接查询(待权威确认), 而且Microsoft Sql Server可用“*=”和“=*”连接符。五除零问题 Microsoft Access 在碰到除数为零时,自动丢掉相

    5、关记录,而 Microsoft Sql Server 则会报错,且查询中止。删除代码: Microsoft Access 可以这样写:delete * from table Microsoft SQL Server 只能这样写:delete from table 多*会报错 _ 当前日期: Microsoft Access 用date() Microsoft SQL Server 用getdate()如果数据库可能会更换类型的话,可以 在ASP代码中加上如这样: if inStr(constr,Microsoft Access) 0 then sqlstr=Microsoft Accesssq

    6、l代码 else sqlstr=Microsoft Sql Serversql代码 end if (constr-连接字符串) 这样即使改了数据库,也不用改数据库查询更新代码了。 再加:access中有true、false的字段记录,而sql里只有smallint,对应如果在access里有“字段名=true”的,在sql里要改成“字段名=1” 网上大部分的免费asp程序使用的是access数据库。但是access数据库作为一个中小型的单机数据库系统,在承担访问量、数据量大的网站应用时,往往就不堪重负了。一般认为,超过50M的access数据库性能就开始明显下降,超过100M以后,出错、运行慢

    7、的问题会更加突出。尽管可以如动网7.0以后那样,从程序的角度尽量优化以图提高性能,但是不能从根本上解决问题。 这时也许使用微软的SQL Server数据库就是最可能的办法,当然也可以使用其它的如Oracle、MySQL等等,但是作为改写来说,由于同为微软的产品,改写成SQL Server应该是最省力的办法。 一、改写前提: 系统已经安装好SQL Server2000并且打上了SP3补丁;安装好Office套件里面的Access;使用一个支持纯文本编辑并且带有行号显示的编辑器,推荐Ultra Edit,当然也可以使用FrontPage2003,不过以前的版本行号显示不太好用。 个人能力要求:会基

    8、本的asp语法、access数据库的操作、SQLServer企业管理器的基本操作。 二、数据库的准备 一般来说有两种情况: 1、程序提供了SQL数据库格式:有一个MDF文件,或者提供了创建SQL数据库的SQL脚本文件(后缀名为.sql)。 如果有mdf文件,可以用企业管理器直接附加上,如果提供的是sql脚本文件,那么就先用企业管理器自己创建一个sql数据库,然后数据库用企业管理器中的查询分析器运行这个脚本创建数据库表。 这样建立的数据库基本不用再去改写什么了。 2、更多的是没有提供SQL数据库或脚本文件的,这时,就要自己来做这一切了,这也是我们这个帖子主要解决的问题。一般这样的程序会提供一个a

    9、ccess数据库,这样你就用企业管理器导入access数据库,导入后需要改写下面一些东西: 对照原来的access,改写下面的部分: (1)sql数据库表是没有自动字段的,因此原来access中的自动字段被转换成了普通字段,需要手工改成标识类型,增量为1。 (2)所有的时间字段,如果定义了默认值,那么原来肯定是now(),需要改成getdate() (3)原来字段的默认值一般都不会自动引入,需要对照原表的字段手工添加。 (4)由于数据库的不同,access和sql的字段类型很多转换后就变化了,比如原来的是否字段会被转换成bit或者int,备注字段被转换成longtext,text字段转换成va

    10、rchar等等,一般来说不会影响程序运行,如果有问题,我们在下面的程序改写部分再说。 (5)如果你要用一个For SQL的程序,里面用到了存储过程,那么你应该有这个程序本身建立SQL数据库的方法:有其本身的SQL数据库文件,或者sql脚本;如果没有的话,采用导入access数据库的方式是无法建立存储过程的,这样你最好放弃这个For SQL的程序版本,使用同样版本的For Access的程序,导入access数据库,然后用下面的改写方法自己改成SQL版本的程序。 三、连接字符串的改写 可参考动网的这段,分别是针对access和SQL的 Dim ConnStr If IsSqlDataBase =

    11、 1 Then sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP) Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName SqlDatabaseName = dvbbs7 SqlPassword = SqlUsername = dvbbs SqlLocalName = (local) ConnStr = Provider = Sqloledb; User ID = & SqlUsername & ; Password = & SqlPassword & ; Initial Catalog = &

    12、SqlDatabaseName & ; Data Source = & SqlLocalName & ; Else 免费用户第一次使用请修改本处数据库地址并相应修改data目录中数据库名称,如将dvbbs6.mdb修改为dvbbs6.asp http:/ = data/fengerqingqing.mdb ConnStr = Provider = Microsoft.Jet.OLEDB.4.0;Data Source = & Server.MapPath(db) End If On Error Resume Next Set conn = Server.CreateObject(ADODB.C

    13、onnection) conn.open ConnStr 当然你使用SQL的话,有关access的使用语句可以删除,就是else后面到on error resume next前面,变成这样: Dim ConnStr sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP) Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName SqlDatabaseName = dvbbs7 SqlPassword = SqlUsername = dvbbs SqlLocalName = (local) ConnStr

    14、= Provider = Sqloledb; User ID = & SqlUsername & ; Password = & SqlPassword & ; Initial Catalog = & SqlDatabaseName & ; Data Source = & SqlLocalName & ; On Error Resume Next Set conn = Server.CreateObject(ADODB.Connection) conn.open ConnStr 也可以简洁一些,写成这样: Set conn = Server.CreateObject(ADODB.Connecti

    15、on) conn.open Provider = Sqloledb; User ID = sa; Password = 1234567; Initial Catalog = dvbbs7; Data Source = (local); 里面的数据库名称、数据源、用户、密码根据自己的实际情况改写一下。 四、程序的改写 这也有两种情况 1、如果你幸运,拿到的是For SQL的程序,那么如果上面的数据库建立过程没有遇到麻烦,程序基本上就可以运行了,出错的话,只是程序本身的bug,如何修改不是这个帖子讨论的内容,就不赘述了。 2、大多数情况,程序本身是For Access的,与For SQL的程序差别

    16、主要是程序中使用到的SQL查询语句。注意,SQL查询语句是数据库应用不可缺少的部分,不管是For SQL还是For Aceess的程序使用的语法大体差不多,但是有一些微妙的差别,正是这些差别,造成了程序的不通用,也是我们需要修改的主要内容。这样一般要修改的部分如下: (1)时间函数的问题:SQL数据库的时间函数与access不同,最常见的是取现在时间的函数,access是now(),SQL是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函数在asp程序本身也要使用,凡是不在数据库查询或执行语句中使用的now()函数千万不要改。

    17、(2)时间比较函数:datediff(d,时间1,时间2)这是access查询用的格式,SQl中这些引号都要去掉,同时时间格式的前后可能加上了#,这也要去掉。同样这也是指在sql语句中的,在asp语句中的要保持原样。 (3)空值的表示:在access中,判断空值一般用是否来表示,但是这在SQL中往往出错,如果遇到出错的问题或者程序运行不正常,可以改成如这样判断:where (name is null) (4)真假值判断:access中可以用true、false来判断,但是在SQL中就会出错,因此在SQL查询或执行语句中这类判断要分别改成1、0。注意一点:有些程序虽然写成“true”,但是由于有

    18、引号,所以这个字段是字符类型的,你不能改成1,保持原样即可。 以上是比较常见的改写的地方,还有一些不太常见,如果遇到了可以在此回帖讨论。 五、程序的调试 前面推荐使用带有行号的编辑器,是因为上述的改写不大可能是直接搜索程序源码来做,很难找全。 我采取的方式一般这样:数据库改写完成,直接调试程序,出错后,看看出错的提示,找到相应文件的代码行,但是根源往往不是那行,比如出错的语句是:conn.execute(sql),但是这句本身是没有错的,错误原因是里面的这个sql字符串,那就向上看这个sql字符串是如何生成的,按照上面所说的程序修改办法修改。 数据库导入以后,自动增加字段需要重写,所有的数字类

    19、型需要增加长度,最好用decimal。 所有的默认值都丢失了。主要是数字类型和日期类型。 所有now(),time(),date()要改成getdate()。 所有datediff(d, time1, time2)要改成datediff(day, time1, time2) 有可能一些true/false类型不能使用,要变为1/0。 备注类型要通过cast(column as varchar)来使用。 CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整。 isnull(rowname)要改成rowname = null ACCESS的数据库中的自动

    20、编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功。 对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete * from user where id=10,而对SQL SERVER数据库进行删除是用:delete

    21、 user where id=10. 日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。 在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。 下表比较了MicrosoftAccess数据库(MicrosoftAccess数据库:数据和对象(如表、查询或窗体)组成的集合,与特定的主题或用途有关。MicrosoftJet数据库引擎用于管理数据。)和Micr

    22、osoftAccess项目(MicrosoftAccess项目:与MicrosoftSQLServer数据库连接且用于创建客户/服务器应用程序的Access文件。项目文件中不包含任何数据或基于数据定义的对象(如表或视图)。)的数据类型(数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括Boolean、Integer、Long、Currency、Single、Double、Date、String和Variant(默认)。 MicrosoftAccess数据类型SQLServer数据类型 是/否(“是/否”数据类型:一种字段数据类型,用于只有两种可能值(如是或否、True或False)的字

    23、段。不允许有Null值。)bit(bit数据类型:在Access项目中,一种存储值为1或0的数据类型。接受1和0以外的整数值,但总是将其解释为1。) 数字(“数字”数据类型:MicrosoftAccess数据库中的一种字段数据类型,用于将在数学运算中使用的数值数据。但是,若要显示或计算货币值,则应使用“货币”数据类型。)(字节)tinyint(tinyint数据类型:Access项目中的一种占一个字节(8位)的数据类型,用于存储从0到255范围内的整数。) 数字(整型)smallint(smallint数据类型:Access项目中的一种2字节(16位)数据类型,存储位于-215(-32,768

    24、)与215-1(32,767)之间的数字。) 数字(长整型)int(int数据类型:Access项目中的一种4字节(32位)数据类型,存储位于-231(-2,147,483,648)与231-1(2,147,483,647)之间的数字。) 数字(单精度浮点型)real(real数据类型:在Access项目中,一种近似的数值数据类型,精度为7位,正值取值范围大致从1.18E-38到3.40E+38,负值取值范围大致从-1.18E-38到-3.40E+38,也可以取0。) (无等价的数据类型)bigint(bigint数据类型:Access项目中的一种8字节(64位)数据类型,存储位于-263(-

    25、9,223,372,036,854,775,808)与263-1(9,223,372,036,854,775,807)之间的数字。) 数字(双精度浮点型)float(float数据类型:在Access项目中,一种近似的数值数据类型,精度为15位。它所存储的正值范围大致是从2.23E-308到1.79E+308,负值范围大致是从-2.23E-308到-1.79E+308,也可以为0。) 货币(“货币”数据类型:MicrosoftAccess数据库中的一种数据类型,用于与货币有关的计算或其精确度极其重要的定点计算。)money(money数据类型:在Access项目中,用于存储货币值的数据类型,取值范围从-922,337,203,685,477.5707到922,337,203,685,477.5807,精确度为万分之一个货币单位。) smallmoney(smallmoney数据类型:Access项目中的一种存储货币值的数据类型,取值范围从-214,748.3648到214,748.3647,精确度为万分之一个货币单位。当显示smallmoney值时,会将它们四舍五入为两个


    注意事项

    本文(ACCESS和SQL语法之ASP比较.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开