范式是与数据库没有具体的联系的,设计师在设计数据库时要求其关系都是达到4NF以上的。因为冗余越小越好。这个概念也是属于E—R分析上的,在分析时数据库还没有建立,甚至于还没有确定使用什么样的关系数据库呢!而最后数据库的建立全部是依赖于E-R模型的!
一般常用与ASP配合使用的数据库有:ACCESS、SQL等,下面是常用的数据库链接方式:
一、ASP的对象存取数据库方法
在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:
Connection、Recordset 、Command
Connection:负责打开或连接数据
Recordset:负责存取数据表
Command:负责对数据库执行行动查询命令
二、连接各数据库的驱动程序
连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常
方便、简单,而使用数据源比较麻烦。
ODBC链接
适合数据库类型 链接方式
access "Driver={microsoft access driver(mdb)};dbq=mdb;uid=admin;
pwd=pass;"
dBase "Driver={microsoft dbase driver(dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oracleseverworld;uid=admin;
pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;
pwd=pass;"
MS text "Driver={microsoft text driver(txt; csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=dbc;
Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;
option=16386;"
OLEDB链接
适合的数据库类型 链接方式
access "Provider=microsoftjetoledb40;data source=your_database_path;user id=admin;
password=pass;"
Oracle "Provider=OraOLEDBOracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;
userid=sa;password=pass;"
MS text "Provider=microsofjetoledb40;data source=your_path;Extended Properties′text;
FMT=Delimited′"
而我们在一般情况下使用Access的数据库比较多,在这里我建议大家连接Access数据库使用下面的方法:
dim conn
set conn = servercreateobject("adodbconnection")
connopen = "provider=microsoftjetoledb40;" & "data source = " & servermappath
("/db/bbsmdb") 其中/db/bbsmdb是你的数据库存放的相对路径!如果你的数据库和ASP文件在
同一目录下,你只要这样写就可以了:
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。
我推荐你使用“网际数据库浏览器”软件,你先看一下以下的介绍:
网际数据库浏览器(Great
Engine
Web
DB
Browse)是一个专门针对互联网数据库开发及维护而设计的开发辅助工具,使用>
<%
dim conn,rs //定义两个变量
set conn=servercreateobject("adodbconnection") //创建一个连接
connopen "driver={microsoft access driver (mdb)};dbq="&servermappath("mdb/mfkiqplmdb") //连接方式,并且打开
set rs=servercreateobject("adodbrecordset") //创建一个指针
set rsactiveconnection=conn
%>
access是中小型数据库,sql是大型的,当存储容量达到一定程度的时候,就会明显的感觉到他们的区别,主要是在存取速度上!
access可以单独的上传下载, *** 作它,本机不需要安装access,而,sql的话,跟mysql相似,你必须在本机安装sql才能在本机上 *** 作数据库,当然也可以通过连接 *** 作网络上的sql数据库, *** 作他们必须用项对应的驱动……
其实还有很多区别的,这里一时也说不清楚,还是自己体会来得深刻!
处了在处理更多数据时速度快外,另外还有有很多功能,在表上,数据上等,sql还有详细的表单来记录访问情况等,双机备份,等等,我也说不完
1、视图:
SQL Server有视图功能,这样就不要一个劲的写很多SQL语句将多表串联起来了。
2、存储过程:
可以说目前绝大多数的数据库应用程序用这个功能就可以完成对数据库的 *** 作了,提高了安全性,尤其是类似于组件功能,最关键一点,速度,毕竟和系统是结合在一起的。
3、触发器:
有了触发器,很多希望只有通过写代码才能完成的工作就不要做了。
access有极限,sql可以完全修复这些问题~一旦access上了100mb,很容易造成服务器iis假死,或者吃光你机子的内存~而且相对而言sql的数据备份比较方便,功能强大很多啊~,要看想用它来做什么了一个小型一个大型!
动易程序Access和SQL Server数据库的区别
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制
Access与语句SqlServer的语句语法区别
1、 Inser Into …Select …From 语句:
在ACCESS中以下语句
INSERT INTO
PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) (SELECT 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index FROM PubSubJectAcc WHERE PubSubJectAccco_type='03')
中后面"(select 200201co_Type='03')"中的小括号("(",")")必须去掉才能执行,如下:
INSERT INTO
PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) SELECT 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index FROM PubSubJectAcc WHERE PubSubJectAccco_type='03'
在SQL SERVER 中都可以
2、 Inner Join 语句1
StrSql:='select auser_id,auser_opcode,bcopy_name from sysuser a inner join (syscopysuser c inner join syscopys b on ccopy_id=ccopy_id) on auser_id=cuser_id where
auser_opcode=''' +EdtUserOpCodetext+''' And copy_name='''+Tmpcopyname +'''';
应该改为
StrSql:='select auser_id,auser_opcode,bcopy_name from sysuser a inner join (syscopysuser c inner join syscopys b on ccopy_id=dcopy_id) on auser_id=cuser_id where
auser_opcode=''' +EdtUserOpCodetext+''' And copy_name='''+Tmpcopyname +'''';
该行代码的检索条件错误:应该把Ccopy_id=CCopy_id 改为ccopy_id=dcopy_id
注:两种写法都能在SQL-SERVER中运行,但ccopy_id=Ccopy_id在ACCESS中不能运行
3、 Inner Join 语句2
StrSql:='select copy_year,copy_name,acopy_id from SysCopys a inner join SysCopysUser b on acurcopy_flag=1 and acopy_id=bcopy_id where buser_id=' + '''' +TmpPubUserID+ '''';
该为
StrSql:='select copy_year,copy_name,acopy_id from SysCopys a inner join SysCopysUser b on acopy_id=bcopy_id where acurcopy_flag=''1'' and buser_id=' + '''' +TmpPubUserID+ '''';
注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行
4、 Inner Join语句3
SQl server 中可以执行以下语句
'SELECT distinct sysoptionopti_id,sysoptionopti_name,sysoptionopti_code,sysroleoptionopti_sort From sysoption inner join sysroleoption ON sysoptionopti_id=sysroleoptionopti_id AND sysroleoptionrole_id=:roleid'
但ACCESS中不能,只能
'SELECT distinct sysoptionopti_id,sysoptionopti_name,sysoptionopti_code,sysroleoptionopti_sort From sysoption inner join sysroleoption ON sysoptionopti_id=sysroleoptionopti_id Where sysroleoptionrole_id=:roleid'
5、 Update语句
Sql SerVer 中能执行但Access 中不能
'UPDATE sysuserrole SET sysuserrolerole_sort = (SELECT sysrolerole_sort FROM sysrole WHERE sysuserrolerole_id = sysrolerole_id and sysuserroleuser_id='01')'
6、 日期比较
SQL SERVER 中用
StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date '
+'From SysCopys '
+'where copy_id='''+LoginCopyID+''' '
+'and start_date<='''+datetostr(LoginDate)+''' '
+'and end_date>='''+datetostr(LoginDate)+'''';
ACCESS中用
StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date '
+'From SysCopys '
+'where copy_id='''+LoginCopyID+''' '
+'and start_date<=#'+datetostr(LoginDate)+'# '
+'and end_date>=#'+datetostr(LoginDate)+'#'
参考以上的第10个函数“GetDateStr”
7、 最大数值获取语句
StrSql:='insert into sysRoleOption '
+'select '''+fidRoleId+''' as Role_ID,opti_id,'
+'convert(numeric,opti_id)-(convert(numeric,opti_parentid)100)+'+ MaxOptiSort
+' as opti_Sort from sysoption where opti_parentid='''
+PCoTypeID(selftrvRolesSelecteddata)^StrCoTypeID
+''' and opti_bottom=''1'+'''';
改为
StrSql:='insert into sysRoleOption '
+'select '''+fidRoleId+''' as Role_ID,opti_id,'
+'opti_id-opti_parentid100+'+ MaxOptiSort
+' as opti_sort from sysoption where opti_parentid='''
+PCoTypeID(selftrvRolesSelecteddata)^StrCoTypeID
+''' and opti_bottom=''1'+''''
注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行
以上就是关于基于asp网上选题使用什么后台数据库,其连接方式是什么请问该数据库达到第几范式全部的内容,包括:基于asp网上选题使用什么后台数据库,其连接方式是什么请问该数据库达到第几范式、asp+asscss搭建网站中最初连接数据库的一般是哪个asp、ASP用ACCESS或SQL Server数据库各有何优缺点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)