实验六 访问数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六访问数据库
一、实验目的
1、熟悉通过嵌入式SQL(主语言为C++语言)编程访问数据库,及掌握游
标的使用方法
2、熟悉通过ODBC接口访问异构数据库并对异构数据库进行操作
3、学会配置ODBC数据源
4、学会各种数据库的访问方法
二、实验要求
1、编写一个嵌入式C++程序,实现对SQL Server2005数据库中的“学生课
程数据库”的Student表中的年龄进行更新,即系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。要求:提交源程序并标识必要的注释。
答:create table provider
(
Sno char(5)primary key,
Sname char(20)not null,
Ssex char(4),
Sage int
);
insert into provider values('S1','李刚',’男’,20);
insert into provider values('S2','李红',’男’,21);
insert into provider values('S3','李飞',’男’,25);
insert into provider values('S4','李春',’男’,21);
#include
#include
#include
#include
#include
#include
#include
#include
EXEC SQL BEGIN DECLARE SECTION;
char deptname[20];
char HSno[9];
char HSname[20];
char HSsex[2];
int HSage;
int NEWAGE;
EXEC SQL END DECLARE SECTION;
long SQLCODE;
EXEC SQL INCLUDE sqlca;
int main(){
void ErrorHandler(void);
int count=0;
char yn;
printf("Please choose the department name(CS/MA/IS):");
scanf("%s",&deptname);
EXEC SQL CONNECT TO学生课程数据库@localhost:54321USER "SYSTEM"/"MANAGER";
EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage FROM Student WHERE SDept=:deptname;
EXEC SQL OPEN SX;
for(;;){
EXEC SQL FETCH SX INTO:HSno,:HSname,:HSsex,:HSage;
if(sqlca.sqlcode!=0)
break;
if(count++==0)
printf("\n%-10s%-20s%-10s%-10s\n","Sno","Sname","Ssex", "Sage");
printf("%-10s%-20s%-10s%-10d\n",HSno,HSname,HSsex,HSage);
printf("UPDATE AGE(y/n)?");
do{
scanf("%c",&yn);
}while(yn!='N'&&yn!='n'&&yn!='Y'&&yn!='y');
if(yn=='y'||yn=='Y'){
printf("INPUT NEW AGE:");
scanf("%d",&NEWAGE);
EXEC SQL UPDATE Student SET Sage=:
NEWAGE WHERE CURRENT OF SX;
}
}
EXEC SQL CLOSE SX;
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT学生课程数据库;
return1;
}
2、查有关C++、Java、C#中有关资料,分别写出C++、Java、C#访问SQL Server
2005数据库数据的方法及步骤。(只写你学的那门语言即可)
答:C#访问SQL Server2005数据库数据的方法及步骤如下所示:
一.数据库连接字符串
典型的数据库连接字符串包括:集成验证和混合验证两种模式
集成验证连接字符:
Data Source=locolhost;Initial Catalog=数据库名称;Integrated Security=True
混合验证模式字符:
Server=localhost;Initial Catalog=数据库名称;Persist Security Info=False;User ID=****; Password=****;
注:
1.这里的Data Source或Server表示数据源所在的计算机名称或IP地址,可以互换。
2.Initial Catalog表示连接的数据库名称,可写为database
3.Integrated Security表示是否要为集成身份验证
4.如果使用的是混合验证,需要提供用户名User ID和密码Password字段。二.类和对象
如下图为中的基本类,注意不是一个继承表,而是关系表
Data提供者对象客户对象
DataSet
DataTable
DataRow
DataColumn DataRelation Connection Command Command Builder DataReader DataAdapter
·提供者对象:专用于每一种类型的数据源;专用于提供者的对象完成数据源中实际的读取和写入工作。
·用户对象:将数据读入到内存中后用来访问和操作的数据的对象。
提供者对象需要一个活动的连接,可以使用它们预先读取数据,然后根据需要通过用户对象使用内存中的数据,也可以使用提供者对象更新数据源中的数据,并将改动写回到数据源中。
用户对象以非连接方式使用,甚至在数据库连接关闭之后,也可使用内存中的数据。
1.提供者对象