范例
当前位置:首页 > 其他范文 > 范例 > 列表页

sql范例开发大全

小草范文网  发布于:2017-01-23  分类: 范例 手机版

篇一:SQL语句大全实例

SQL语句实例

表操作

例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下:

CREATE TABLE STUDENTS

(SNONUMERIC (6, 0) NOT NULL

SNAME CHAR (8) NOT NULL

AGENUMERIC(3,0)

SEXCHAR(2)

BPLACE CHAR(20)

PRIMARY KEY(SNO))

例 2 对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:

CREATE TABLE ENROLLS

(SNONUMERIC(6,0) NOT NULL

CNO CHAR(4) NOT NULL

GRADEINT

PRIMARY KEY(SNO,CNO)

FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)

FOREIGN KEY(CNO) REFERENCES COURSES(CNO)

CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))

例 3 根据表的 STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE

FROM STUDENTS

WHERE SEX=' 女 ';

例 4 删除教师表 TEACHER 。

DROP TABLE TEACHER

例 5 在教师表中增加住址列。

ALTER TABLE TEACHERS

ADD (ADDR CHAR(50))

例 6 把 STUDENTS 表中的 BPLACE 列删除,并且把引用 BPLACE 列的所有视图和约束也一起删除。

ALTER TABLE STUDENTS

DROP BPLACE CASCADE

例 7 补充定义 ENROLLS 表的主关键字。

ALTER TABLE ENROLLS

ADD PRIMARY KEY (SNO,CNO) ;

视图操作(虚表)

例 9 建立一个只包括教师号、姓名和年龄的视图 FACULTY 。 ( 在视图定义中不能包含 ORDER BY 子句 )

CREATE VIEW FACULTY

AS SELECT TNO, TNAME, AGE

FROM TEACHERS

例 10 从学生表、课程表和选课表中产生一个视图 GRADE_TABLE , 它包括学生姓名、课程名和成绩。

CREATE VIEW GRADE_TABLE

AS SELECT SNAME,CNAME,GRADE

FROM STUDENTS,COURSES,ENROLLS

WHERE STUDENTS.SNO = ENROLLS.SNO AND

COURSES.CNO=ENROLLS.CNO

例 11 删除视图 GRADE_TABLE

DROP VIEW GRADE_TABLE RESTRICT

索引操作

例 12 在学生表中按学号建立索引。

CREATE UNIQUE INDEX ST

ON STUDENTS (SNO,ASC)

例 13 删除按学号所建立的索引。

DROP INDEX ST

数据库模式操作

例 14 创建一个简易教学数据库的数据库模式TEACHING_DB ,属主为 ZHANG 。 CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG

例 15 删除简易教学数据库模式 TEACHING_DB 。(( 1 )选用 CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除。( 2 )选用 RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)

DROP SCHEMA TEACHING_DB CASCADE

单表操作

例 16 找出 3 个学分的课程号和课程名。

SELECT CNO, CNAME

FROMCOURSES

WHERECREDIT = 3

例 17 查询年龄大于 22 岁的学生情况

SELECT *

FROMSTUDENTS

WHERE AGE > 22

例 18找出籍贯为河北的男生的姓名和年龄。

SELECT SNAME, AGE

FROMSTUDENTS

WHEREBPLACE = ' 河北 ' AND SEX = ' 男 '

例 19 找出年龄在 20 ~ 23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序。 (ASC (升序)或 DESC (降序)声明排序的方式,缺省为升序。 )

SELECT SNO, SNAME, AGE

FROMSTUDENTS

WHERE AGE BETWEEN 20 AND 23

ORDER BY AGE

例 20 找出年龄小于 23 岁、籍贯是湖南或湖北的学生的姓名和性别。(条件比较运算符=、< 和逻辑运算符 AND (与),此外还可以使用的运算符有:>(大于)、>=(大于等于)、<=(小于等于)、<>(不等于)、 NOT (非)、 OR (或)等。

谓词 LIKE 只能与字符串联用,常常是 “ <列名>LIKE pattern” 的格式。特殊字符 “_” 和 “%” 作为通配符。

谓词 IN 表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的 OR (或)的缩写。谓词 NOT IN 表示指定的属性不与后面的集合中的某个值相匹配。

谓词 BETWEEN 是 “ 包含于 … 之中 ” 的意思。)

SELECT SNAME, SEX

FROMSTUDENTS

WHERE AGE < 23 AND BPLACE LIKE' 湖% '

SELECT SNAME, SEX

FROMSTUDENTS

WHERE AGE < 23 AND BPLACE IN ( ' 湖南 ' , ' 湖北 ' )

例 22 找出学生表中籍贯是空值的学生的姓名和性别。(在 SQL 中不能使用条件:<列名>= NULL 。在 SQL 中只有一个特殊的查询条件允许查询 NULL 值:)SELECT SNAME, SEX

FROMSTUDENTS

WHERE BPLACE IS NULL

多表操作

例 23 找出成绩为 95 分的学生的姓名。(子查询)

SELECT SNAME

FROMSTUDENTS

WHERESNO =

(SELECT SNO

FROMENROLLS

WHERE GRADE = 95)

例 24 找出成绩在 90 分以上的学生的姓名。

SELECT SNAME

FROMSTUDENTS

WHERE SNO IN

(SELECT SNO

FROM ENROLLS

WHERE GRADE > 90)

SELECT SNAME

FROMSTUDENTS

WHERE SNO = ANY

(SELECT SNO

FROM ENROLLS

WHERE GRADE > 90)

例 25 查询全部学生的学生名和所学课程号及成绩。(连接查询)

SELECT SNAME, CNO, GRADE

FROMSTUDENTS, ENROLLS

WHERE STUDENTS.SNO = ENROLLS.SNO

例 26 找出籍贯为山西或河北,成绩为 90 分以上的学生的姓名、籍贯和成绩。(当构造多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 1 (若有三个表,就有两个连接条件 ) ;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))

SELECT SNAME, BPLACE, GRADE

FROMSTUDENTS, ENROLLS

WHERE BPLACE IN (? 山西 ? , ? 河北 ?) AND GRADE >= 90 ANDSTUDENTS.SNO=ENROLLS.SNO

例 28 查出课程成绩在 80 分以上的女学生的姓名、课程名和成绩。( FROM 子句中的子查询)

SELECT SNAME,CNAME, GRADE

FROM(SELECT SNAME, CNAME , GRADE

FROM STUDENTS, ENROLLS,COURSES

WHERE SEX = ' 女 ')

AS TEMP (SNAME, CNAME,GRADE)

WHERE GRADE > 80

表达式与函数的使用

例 29 查询各课程的学时数。(算术表达式由算术运算符+、-、 * 、/与列名或数值常量所组成。)

SELECT CNAME,COURSE_TIME = CREDIT*16

FROMCOURSES

例 30 找出教师的最小年龄。(内部函数: SQL 标准中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函数,称之为聚集函数( Set Function )。 COUNT 函数的结果是该列统计值的总数目, SUM 函数求该列统计值之和, AVG 函数求该列统计值之平均值, MAX 函数求该列最大值, MIN 函数求该列最小值。)

SELECT MIN(AGE)

FROMTEACHERS

例 31 统计年龄小于等于 22 岁的学生人数。(统计)

SELECT COUNT(*)

FROMSTUDENTS

WHERE AGE < = 22

例 32 找出学生的平均成绩和所学课程门数。

SELECT SNO, AVG(GRADE), COURSES = COUNT(*)

FROMENROLLS

GROUP BY SNO

例 34 找出年龄超过平均年龄的学生姓名。

SELECT SNAME

FROM STUDENTS

WHERE AGE >

(SELECT AVG(AGE)

FROMSTUDENTS)

例 35 找出各课程的平均成绩,按课程号分组,且只选择学生超过 3 人的课程的成绩。( GROUP BY 与 HAVING

GROUP BY 子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据进行规定的操作。

篇二:SQL语句大全实例

SQL语句实例

表操作

例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下:

CREATE TABLE STUDENTS

(SNONUMERIC (6, 0) NOT NULL

SNAME CHAR (8) NOT NULL

AGENUMERIC(3,0)

SEXCHAR(2)

BPLACE CHAR(20)

PRIMARY KEY(SNO))

例 2 对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:

CREATE TABLE ENROLLS

(SNONUMERIC(6,0) NOT NULL

CNO CHAR(4) NOT NULL

GRADEINT

PRIMARY KEY(SNO,CNO)

FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)

FOREIGN KEY(CNO) REFERENCES COURSES(CNO)

CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))

例 3 根据表的 STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE

FROM STUDENTS

WHERE SEX=' 女 ';

例 4 删除教师表 TEACHER 。

DROP TABLE TEACHER

例 5 在教师表中增加住址列。

ALTER TABLE TEACHERS

ADD (ADDR CHAR(50))

例 6 把 STUDENTS 表中的 BPLACE 列删除,并且把引用 BPLACE 列的所有视图和约束也一起删除。

ALTER TABLE STUDENTS

DROP BPLACE CASCADE

例 7 补充定义 ENROLLS 表的主关键字。

ALTER TABLE ENROLLS

ADD PRIMARY KEY (SNO,CNO) ;

视图操作(虚表)

例 9 建立一个只包括教师号、姓名和年龄的视图 FACULTY 。 ( 在视图定义中不能包含 ORDER BY 子句 )

CREATE VIEW FACULTY

AS SELECT TNO, TNAME, AGE

FROM TEACHERS

例 10 从学生表、课程表和选课表中产生一个视图 GRADE_TABLE , 它包括学生姓名、课程名和成绩。

CREATE VIEW GRADE_TABLE

AS SELECT SNAME,CNAME,GRADE

FROM STUDENTS,COURSES,ENROLLS

WHERE STUDENTS.SNO = ENROLLS.SNO AND

COURSES.CNO=ENROLLS.CNO

例 11 删除视图 GRADE_TABLE

DROP VIEW GRADE_TABLE RESTRICT

索引操作

例 12 在学生表中按学号建立索引。

CREATE UNIQUE INDEX ST

ON STUDENTS (SNO,ASC)

例 13 删除按学号所建立的索引。

DROP INDEX ST

数据库模式操作

例 14 创建一个简易教学数据库的数据库模式TEACHING_DB ,属主为 ZHANG 。 CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG

例 15 删除简易教学数据库模式 TEACHING_DB 。(( 1 )选用 CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除。( 2 )选用 RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)

DROP SCHEMA TEACHING_DB CASCADE

单表操作

例 16 找出 3 个学分的课程号和课程名。

SELECT CNO, CNAME

FROMCOURSES

WHERECREDIT = 3

例 17 查询年龄大于 22 岁的学生情况。

SELECT *

FROMSTUDENTS

WHERE AGE > 22

例 18找出籍贯为河北的男生的姓名和年龄。

SELECT SNAME, AGE

FROMSTUDENTS

WHEREBPLACE = ' 河北 ' AND SEX = ' 男 '

例 19 找出年龄在 20 ~ 23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序。 (ASC (升序)或 DESC (降序)声明排序的方式,缺省为升序。 )

SELECT SNO, SNAME, AGE

FROMSTUDENTS

WHERE AGE BETWEEN 20 AND 23

ORDER BY AGE

例 20 找出年龄小于 23 岁、籍贯是湖南或湖北的学生的姓名和性别。(条件比较运算符=、< 和逻辑运算符 AND (与),此外还可以使用的运算符有:>(大于)、>=(大于等于)、<=(小于等于)、<>(不等于)、 NOT (非)、 OR (或)等。

谓词 LIKE 只能与字符串联用,常常是 “ <列名>LIKE pattern” 的格式。特殊字符 “_” 和 “%” 作为通配符。

谓词 IN 表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的 OR (或)的缩写。谓词 NOT IN 表示指定的属性不与后面的集合中的某个值相匹配。

谓词 BETWEEN 是 “ 包含于 … 之中 ” 的意思。)

SELECT SNAME, SEX

FROMSTUDENTS

WHERE AGE < 23 AND BPLACE LIKE' 湖% '

SELECT SNAME, SEX

FROMSTUDENTS

WHERE AGE < 23 AND BPLACE IN ( ' 湖南 ' , ' 湖北 ' )

例 22 找出学生表中籍贯是空值的学生的姓名和性别。(在 SQL 中不能使用条件:<列名>= NULL 。在 SQL 中只有一个特殊的查询条件允许查询 NULL 值:)SELECT SNAME, SEX

FROMSTUDENTS

WHERE BPLACE IS NULL

多表操作

例 23 找出成绩为 95 分的学生的姓名。(子查询)

SELECT SNAME

FROMSTUDENTS

WHERESNO =

(SELECT SNO

FROMENROLLS

WHERE GRADE = 95)

例 24 找出成绩在 90 分以上的学生的姓名。

SELECT SNAME

FROMSTUDENTS

WHERE SNO IN

(SELECT SNO

FROM ENROLLS

WHERE GRADE > 90)

SELECT SNAME

FROMSTUDENTS

WHERE SNO = ANY

(SELECT SNO

FROM ENROLLS

WHERE GRADE > 90)

例 25 查询全部学生的学生名和所学课程号及成绩。(连接查询)

SELECT SNAME, CNO, GRADE

FROMSTUDENTS, ENROLLS

WHERE STUDENTS.SNO = ENROLLS.SNO

例 26 找出籍贯为山西或河北,成绩为 90 分以上的学生的姓名、籍贯和成绩。(当构造多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 1 (若有三个表,就有两个连接条件 ) ;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))

SELECT SNAME, BPLACE, GRADE

FROMSTUDENTS, ENROLLS

WHERE BPLACE IN (? 山西 ? , ? 河北 ?) AND GRADE >= 90 ANDSTUDENTS.SNO=ENROLLS.SNO

例 28 查出课程成绩在 80 分以上的女学生的姓名、课程名和成绩。( FROM 子句中的子查询)

SELECT SNAME,CNAME, GRADE

FROM(SELECT SNAME, CNAME , GRADE

FROM STUDENTS, ENROLLS,COURSES

WHERE SEX = ' 女 ')

AS TEMP (SNAME, CNAME,GRADE)

WHERE GRADE > 80

表达式与函数的使用

例 29 查询各课程的学时数。(算术表达式由算术运算符+、-、 * 、/与列名或数值常量所组成。)

SELECT CNAME,COURSE_TIME = CREDIT*16

FROMCOURSES

例 30 找出教师的最小年龄。(内部函数: SQL 标准中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函数,称之为聚集函数( Set Function )。 COUNT 函数的结果是该列统计值的总数目, SUM 函数求该列统计值之和, AVG 函数求该列统计值之平均值, MAX 函数求该列最大值, MIN 函数求该列最小值。)

SELECT MIN(AGE)

FROMTEACHERS

例 31 统计年龄小于等于 22 岁的学生人数。(统(本文来自:wwW.xIaocAofanwEn.coM 小草 范文 网:sql范例开发大全)计)

SELECT COUNT(*)

FROMSTUDENTS

WHERE AGE < = 22

例 32 找出学生的平均成绩和所学课程门数。

SELECT SNO, AVG(GRADE), COURSES = COUNT(*)

FROMENROLLS

GROUP BY SNO

例 34 找出年龄超过平均年龄的学生姓名。

SELECT SNAME

FROM STUDENTS

WHERE AGE >

(SELECT AVG(AGE)

FROMSTUDENTS)

例 35 找出各课程的平均成绩,按课程号分组,且只选择学生超过 3 人的课程的成绩。( GROUP BY 与 HAVING

GROUP BY 子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据进行规定的操作。

篇三:ASPNET35开发大全第10章

孙永杰著作《ASP.NET开发》

第10章 访问其他数据源

在ADO.NET体系中,非常重要的组件就是.NET Data Provider,它负责建立与数据库之间的连接并执行数据操作。ADO.NET提供了多种.NET Data Provider,负责连接不同的数据库。在前面的章节中,通常使用的是SQL Server .NET Data Provider,使用其他的.NET Data Provider能够访问其他类型的数据库。

10.1 使用ODBC .NET Data Provider

ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一的接口标准。在C++开发中,经常使用ODBC来与数据库互连,.NET同样提供了连接ODBC的方法。ODBC可以让开发人员通过API来访问多种不同的数据库,包括SQL Server、Access、MySql等。

10.1.1 ODBC .NET Data Provider简介

ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一的接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作。

当使用应用程序时,应用程序首先通过使用ODBC API与驱动管理器进行通信。ODBC API由一组ODBC函数调用组成,通过API调用ODBC函数提交SQL请求,然后驱动管理器通过分析ODBC函数并判断数据源的类型。驱动管理器会配置正确的驱动器,然后将ODBC函数调用传递给驱动器。最后,驱动器处理ODBC函数调用,把SQL请求发送给数据源,数据源执行相应操作后,驱动器返回执行结果,管理器再吧执行结果返回给应用程序,如图10-1所示。

图10-1 ODBC原理图

使用命名空间System.Data.Odbc才能够使用ODBC .NET Data Provider来访问ODBC数据源,并且支持对原有的ODBC驱动程序的访问。通过ODBC能够连接和执行数据操作,其访问方式和SQL Server .NET Data Provider相似,都需要先与数据源建立连接并打开连接,然后创建Command对象执行相应操作,最后关闭数据连接。

通过ODBC驱动程序访问数据源与SQL Server .NET Data Provider相同,ODBC .NET Data Provider同样包含Connection、Command、DataReader等类为开发人员提供数据的遍历和存取等操作,这些类和功能如下所示。

? OdbcConnection:建立与ODBC数据源的连接。

? OdbcCommand:执行一个SQL语句或存储过程。

? OdbcDataReader:与Command对象一起使用,读取ODBC数据源。

? OdbcDataAdapter:创建适配器,用来填充DataSet。

? OdbcCommandBuilder:用来自动生成插入、更新、删除等操作的SQL语句。

上述对象在ADO.NET中经常遇到,在前面的章节中,SQL Server .NET Data Provider同样包括这些对象,使用ODBC操作数据源的操作方法与SQL Server .NET Data Provider基本相同,使得开发人员无需额外的学习即可轻松使用。

10.1.2 建立连接

ODBC .NET Data Provider连接数据库有两种方法,一种是通过DSN连接数据库,第二种就是使用OdbcConnection对象建立与数据库的连接。

269

1.使用DSN的连接字符串进行连接

使用DSN(Data Source Name,数据源名)连接数据库,必须首选创建ODBC数据源,当创建一个ODBC数据源时,需要在管理工具中配置。在开始菜单中找到并打开【控制面板】,然后在【控制面板】中选择【管理工具】选项,在【管理工具】选项中选择【数据源(ODBC)】选项,选择后还需要选择

【系统DSN】标签用于系统DSN的配置,如图10-2所示。

单击【添加】按钮,在弹出的对话框中选择合适的驱动程序,由于这里需要使用DSN连接ACCESS数据库,就需要选择ACCESS数据库的相应的驱动,这里选择【Microsoft Access Driver(*mdb)】选项,如图10-3所示。

图10-2 数据源管理器 图10-3 创建新数据源

单击【选择】按钮可以为需要使用数据库的应用程序选择相应的数据库,在选择完成相应的数据库后就能够在应用程序中使用DSN连接该数据源,如图10-4所示。

图10-4 选择数据源

选择好相应的驱动程序后,系统会弹出【ODBC Microsoft Access安装】对话框并为驱动设置数据源名和说明,如图10-5所示。单击【确定】按钮就完成了数据源的配置,如图10-6所示。

270

图10-5 命名数据源 图10-6 数据源配置完毕

当配置完成数据源后,就可以编写.NET应用程序来访问数据源。打开Visual Studio 2008,选择

【ASP.NET Web应用程序】选项,如图10-7所示。

图10-7 创建ASP.NET应用程序

当创建完成数据源之后,就可以使用OdbcConnection对象连接应用程序和数据库,与连接字串一样,OdbcConnection对象需要使用Open方法才能打开与数据库之间的连接。在使用OdbcConnection对象同样需要使用命名控件System.Data.Odbc,示例代码如下所示。

using System.Data.Odbc;

引用了System.Data.Odbc命名空间后,就可以创建Connection对象进行数据连接,示例代码如下所示。

string str = @"DSN=guojing";

OdbcConnection con = new OdbcConnection(str);

con.Open();//使用ODBC数据源 //创建OdbcConnection对象 //打开数据库连接

上述代码使用了ODBC数据源,数据源的名称和刚才创建的名称相同,数据库连接字串直接使用“DNS=数据源名称”即可。打开了与数据库的连接后,即可对数据库进行操作,操作方法同样和普通的方法没有区别。如果希望执行查询语句并填充数据集,则需要创建DataAdapter对象和DataSet对象,示例代码如下所示。

271

string strsql = "select * from mytable";

OdbcDataAdapter da = new OdbcDataAdapter(strsql,con);

DataSet ds = new DataSet();

da.Fill(ds, "tablename");

//创建DataAdapter对象 //创建DataSet //填充数据集

若需要执行插入、更新、删除等操作,可以使用Command对象执行相应的操作,示例代码如下所示。

OdbcCommand cmd = new OdbcCommand("insert into mytable values ('title')",con);

cmd.ExecuteNonQuery();//执行SQL语句

当需要对其他的数据源执行操作时,在配置DSN时配置其他数据源和数据源驱动程序即可,如图10-8所示。

图10-8 配置其他数据源

使用ODBC配置数据源有一些好处,就是能够为其他类型的数据库配置数据驱动而不用考虑驱动如何进行手动方式连接。

2.使用接字符串进行连接(ACCESS)

ACCESS数据库是桌面级的数据库,是以一种文件形式保存的数据库。在使用ACCESS数据库时,很多情况下都不能依靠ODBC建立数据驱动来连接数据库,在这种情况下,需要使用连接字符串连接ACCESS数据库,示例代码如下所示。

string str = "provider=Microsoft.Jet.OLEDB.4.0 ;

Data Source=D:\ASP.NET 3.5\源代码\第10章\10-1\10-1\acc.mdb"; //配置数据库路径

上述代码使用了Micorsoft.Jet.OLEDB 4.0驱动进行ACCESS数据库的连接。在上述代码中,ACCESS文件的地址为“D:\ASP.NET 3.5\源代码\第10章\10-1\10-1”。但是这样编写代码有若干坏处,最大的坏处就是暴露了物理路径,当非法用户访问或获取代码后,能容易的就能够获取数据库的信息并通过下载工具下载数据库,这样是非常不安全的。为了提高应用程序的安全性,开发人员可以使用Server.MapPath方法指定相对路径,示例代码如下所示。

string str = "provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("acc.mdb") + ""; 上述代码指定了数据库的文件,以及相对路径,当acc.mdb与文件夹路径相同时,系统会隐式的补完绝对路径,而不会轻易的暴露物理路径,如果acc.mdb在文件夹的上层路径,则只需要使用“../”来确定相对路径。当指定数据库文件地址后,可以使用Connection对象进行数据库连接操作并使用Open方法打开数据连接,示例代码如下所示。

OdbcConnection con = new OdbcConnection(str);

con.Open(); //配置连接对象 //打开连接

3.使用接字符串进行连接(SQL Server)

272

本文已影响