在VC++6.0中嵌入sql的方法[1]

合集下载

c中嵌套sql

c中嵌套sql

一、ESQL/C 学习在c语言程序使用嵌套的sql语句。

(1)1、每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。

这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。

2、如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”,在Fortran中必须有续行符。

其他语言也有相应规定。

3、每一条嵌入SQL语句都有结束符号,如:在C中是“;”。

4、嵌入SQL语句的关键字不区分大小写。

5、可以使用“/*….*/”来添加注释。

也可以使用“--”来添加注释(2)嵌入SQL语句应该包含五个步骤:1)、通过SQLCA建立应用程序和SQL SERVER的SQL通信区域。

2)、声明宿主变量。

3)、连接到SQL SERVER。

4)、通过SQL语句操作数据。

5)、处理错误和结果信息(3)声明宿主变量宿主变量(host variable)就是在嵌入式SQL语句中引用主程序说明的程序变量,在程序和嵌入sql语句中都可以用。

例如:EXEC SQL BEGIN DECLARE SECTION;char user[31],passwd[31];EXEC SQL END DECLARE SECTION;说明:在嵌入式SQL语句中使用主变量前,必须采用BEGIN DECLARE SECTION 和END DECLARE SECTION 之间给主变量说明。

注意:1:主变量是标准的C程序变量。

2:嵌入SQL语句使用主变量来输入数据和输出数据。

3:C程序和嵌入SQL语句都可以访问主变量。

使用:为了便于识别主变量,当嵌入式SQL语句中出现主变量时,必须在变量名称前标上冒号(:)。

(4)连接数据库在程序中,使用CONNECT语句来连接数据库;语法格式:exec sql connect :user identified by :passwd using :server;断开数据库在嵌入SQL语句中,使用DISCONNECT语句断开数据库的连接;DISCONNECT [connection_name | ALL | CURRENT]其中,connection_name为连接名。

Visual C++ 6.0连接SQLServer 2005数据库的ADO方法

Visual C++ 6.0连接SQLServer 2005数据库的ADO方法

(1)Windows环境下,ODBC数据源的配置方法:1)开始→设置→控制面板→管理工具→双击“数据源(ODBC)”。

2)在ODBC数据源管理器中,单击“系统DSN”标签;单击“添加(D)”按钮,并在“列表框”中选择“SQL Server”,然后单击“完成”。

如果已经存在现有的数据源,则选择指定的数据源后,单击“配置”,转向对该数据源进行重新配置。

3)在创建到SQL Server新数据源窗口(如图10-4)中的“名称(M):”右侧,输入:VCSQLServer2005;“描述(D):”右侧,输入:VC SQL Server 2005;“服务器(S):”右侧,输入:指定服务器的位置和名称(通常使用默认服务器,输入一个英文字符半角圆点.)。

图10-4 ODBC数据源设置4)在创建到SQL Server新数据源窗口中,单击“下一步(N)>”,选择“使用网络登录ID的Windows NT验证(W)”或者“使用用户输入登录ID和密码的SQL Server(S)”(默认选择前者),然后单击“下一步(N)>”。

5)在创建到SQL Server新数据源窗口中,勾选“更改默认的数据库为(D):”,并在其下方的下拉列表框中,选择用户连接的默认数据库(本例选择:VcSqlAdoDB),然后单击“下一步(N)>”,再单击“完成”。

6)在ODBC Microsoft SQL Server安装窗口中,单击“测试数据源(T)…”,等待测试成功后,单击“确定”完成数据源配置。

(2)Windows环境下,Visual C++ 6.0连接SQLServer 2005数据库的ADO方法:1)引入ADO库定义文件,初始化COM库使用# import把动态连接库msado15.dll导入Visual C++应用程序,并生成定义ADO库的两个C++头文件:msado15.tlh和ado15.tli。

即:# import "c:Program FilesCommon FilesSystemADOmsado15.dll"no_namespace rename("EOF","EndOfFile")使用CoInitialize ()初始化COM库。

在VC++6.0中嵌入sql的方法[1]

在VC++6.0中嵌入sql的方法[1]

C:\Program
Files\Microsoft SQL Server\80\Tools\D evTools\Include C:\Program Files\Microsoft Visual Studio\VC98\Lib
执行嵌入了SQL的C程序产 生的问题
解决方法是将Sqlak32.dll从 Sql server安装盘拷贝到C源程 序所在的目录(此C程序由预 编译器产生)
嵌入SQL步骤之三:预编 译.sqc源文件
• 若预编译.sqc源文件时产生如下问题: --------------------Configuration: sp - Win32 Debug--------• running ESQL/C precompiler • Error executing c:\windows\system32\cmd.exe. • sp.exe - 1 error(s), 0 warning(s)
在C中嵌入sql的方法
操作环境,基于: Vc++6.0 sqlserver 2000
杜茂康 2004-10-2
Installing Embedded SQL for C
Directory \Mssql7\Binn File Nsqlprep.exe Description
Sqlaiw32.dll
Sqlakw32.dll
x:\Program Files\Micros oft SQL Server\80\T ools\DevTo ols\Include.
C嵌入SQL步骤之二:设置预 编译环境
5. In the Show directories for box, click:
Library files.

嵌入式SQL

嵌入式SQL

嵌入式SQL嵌入式SQL语言把SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。

这种方式下使用的SQL语言称为嵌入式SQL (Embedded SQL),而嵌入SQL的高级语言称为主语言或宿主语言。

1.1 嵌入式SQL的一般形式对宿主型数据库语言SQL,DBMS可采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。

目前采用较多的是预编译的方法。

即由DBMS的预处理程序对源程序进行扫描,识别出SQL语句。

把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。

在嵌入式SQL中,为了能够区分SQL语句与主语言语句,所有SQL语句都必须加前缀EXEC SQL.。

SQL语句的结束标志则随主语言的不同而不同。

例如在PL/1和C中以分号(;)结束;EXEC SQL <SQL 语句> ;在COBOL中以END-EXEC 结束;EXEC SQL < SQL 语句> END-EXEC例如一条交互形式的SQL语句:DROP TABLE Student ;嵌入到C程序中,应写成:EXEC SQL DROP TABLE Student ;嵌入SQL语句根据其作用的不同,可分为可执行语句和说明性语句两种。

可执行语句又分为数据定义,数据控制,数据操纵三种。

在宿主程序中,任何允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句;任何允许出现说明型高级语言语句的地方,都可以写说明性SQL语句。

1.2 嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制程序流程。

这时程序中会含有两种不同计算模型的语句,一种是描述性的面向集合的SQL语句,一种是过程性的高级语言语句,它们之间应该如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区(SQL Communication Area ,简称SQLCA)实现;(2)主语言向SQL语句提供参数,主要用主变量实现;(3)将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。

嵌入式SQL

嵌入式SQL

嵌入式SQL一、嵌入式SQL 简介嵌入式SQL(英文: Embedded SQL)是一种将SQL 语句直接嵌入到像C 、C++、JA V A 等程序设计语言中的方法。

借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。

在这一方法中,将包含SQL 语言的程序设计语言成为称为宿主语言,简称主语言。

二、嵌入式SQL 的编写流程注:由于嵌入式SQL 的主语言有很多,关系型数据库也有很多,由于时间有限,我就不一一阐述了,这里我只以C 语言和Oracle 数据库为例进行说明,有兴趣的同学可以研究一下相关内容。

1.编写pc 源程序(包含SQL 语句的程序);2.使用Oracle 提供的预编译工具ProC.exe 将内嵌的SQL 语句转换为对Oracle 运行库函数( SQLLIB ) 的调用,并生成C 源代码文件;3.使用C /C++编译工具编译C/C++源文件,生成目标文件;4.使用C/C++链接工具生成可执行文件;5.运行可执行文件。

三、主语言与SQL 语句通信原理将SQL 嵌入到高级语言中混合编程,SQL 语句负责操作数据库,高级语言负责控制程序流程。

这时候程序中含有两种不同计算模型的语句,它们之间如何进行通信呢?1.SQL 语句如何向主程序传递执行状态信息?编写包含SQL 语句的程序***.pc 文件生成用RDBMS 提供的预编译工具编译***.c 文件嵌入式SQL 编写流程例如:在C语言中有这么一个功能需求,如果SQL语言执行成功,我就去执行下一行代码,否则我就退出。

这时就需要知道SQL语句的执行状态了。

在嵌入式SQL语言中,SQL语句是通过SQLCA(SQL通信区)向主程序传递其执行状态的,SQLCA里面有一个变量SQLCODE,根据这个变量,就可以知道SQL语句的执行状态。

如sqlca.sqlcode = 0 表明SQL语句执行成功;sqlca.sqlcode=1403,代表查询语句没有返回值;对于上面的案例,我们可以这样做:执行select * from student;If(sqlca.sqlcode ==0){Printf(“执行成功”);}else{Exit(0);}2.SELECT语句返回的结果怎么交给主程序,主程序如何向SQL语句传递参数。

嵌入式SQL实验指导

嵌入式SQL实验指导

实验6 嵌入式SQL通过这个实验,我们首先熟悉了嵌入式SQL编程,并可以自己动手编写一个小型的数据库应用程序。

而且能够大体了解我们平时在日常生活中看到的一些数据库应用程序是如何开发出来的。

做完这个实验,你会发现那些数据库程序也并不是十分高深。

这是我们最后一个实验,也是工作量最大的一个实验,大约需要2-3次实验课的时间。

希望同学们认真完成。

实验平台1.OS:WindowsXP2.DBMS:SQLServer2000piler:Visual C++ 6.0(大家可能没有接触过VC++,但并不妨碍我们做这个实验,因为在这个实验中我们只利用它的编译功能。

)预备知识1)嵌入式SQL编程:嵌入式SQL由SQL语句和C/C++代码组成。

其中SQL语句由预处理器翻译成C或C++的源代码。

对预处理后的源代码进行编译、连接生成可执行程序后方可运行。

●SQL预处理器SQLServer的预处理程序是nsqlprep.exe。

其常用的语法格式如下:nsqlprep 程序文档名⏹要求程序文档名的后缀为.sqc,可以省略。

⏹预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个路径下nsqlprep.exe在SQLServer的安装目录的MSSQL\Binn下。

在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server,nsqlprep.exe在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。

由于默认的安装方式(典型安装)并没有安装应用程序nsqlprep.exe,因此,需要你把我提供的binn文件夹,拷贝到该目录下覆盖原来的Binn。

●连接方式经预处理后的c文件就可以用c的编译器进行编译连接了。

使用Visual C++ 6.0进行编译连接,连接方式是动态连接,用到动态链接库SQLakw32.dll,sqlaiw32.dll;此两文件已经随同binn.rar的其他内容,被拷贝到C:\Program Files\Microsoft SQL Server\MSSQL\Binn下;但仍然需要把该路径加到系统的路径变量中,以使得程序运行时能找到这两个文件。

vc实现SQL数据库ADO连接

vc实现SQL数据库ADO连接

vc实现SQL数据库ADO连接关于vc6.0中实现ADO SQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇能把看似一个复杂的问题简单化的文章的。

从网上收集了一些资料实践过后晒到博客里,希望跟我一样的菜鸟们学的开心!下面开始。

概述:要在一个vc工程中实现数据库的连接,最好的方式是在新建一个用于连接数据库的类比如ADOConn,需要连接数据库的时候将这个类实例化就可以了(即新建一个ADOConn的对象,比如ADOConn ac;)。

然后再引用些对象就可以实现相应的操作了。

(一),在vc6.0中新建一个基于对话话的mfc工程,然后点击菜单栏->插入->类。

然后在“类的类型”中选择Generic Class,名称为ADOConn。

此后会在vc左边视窗的“Source Files”中多出一个ADOConn.cpp的文件,在"Header Files"中多出一个“ADOCon.h”的文件。

(二)打开ADOConn.h(即编辑ADOConn类的头文件)(1)在第一行加入(用于vc支持ado连接)#import "c:\ProgramFiles\Common Files\System\ado\msado15.dll" no_namespacerename("EOF","adoEOF") rename("BOF","adoBOF")(2)在class ADOConn类体中添加如下代码public:// 定义变量_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;// 初始化—连接数据库void OnInitADOConn();// 执行查询_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);// 执行SQL语句,Insert Update _variant_tBOOL ExecuteSQL(_bstr_t bstrSQL);void ExitConnect();至此ADOConn.h的操作完成。

VC6.0+SQL2000数据库应用demo(课程设计题目)

VC6.0+SQL2000数据库应用demo(课程设计题目)

1,建立数据库建立数据库:students建立表:student结构:其中sid是主键添加几项数据项,以便编程中使用。

2,建立数据源打开“控制面版”->"管理工具”(经典视图中)->“数据源(ODBC)”->选中“用户DNS”->点击“添加”出现如下对话框:选择“SQL Server”,点击完成,进行如下设置:1.输入“名称”与“服务器”23.更改默认的数据库为“students”4.5,点击“完成”,测试连接,如果成功,显示如下6.添加完成后“用户数据库就多了刚刚添加的数据源,点击”确定“,ODBC设置完成3,MFC程序设计新建MFC(exe)工程选择”基本对话框“去掉”关于对话框"点击“完成”,完成新建项目删除IDD_STUDENT_DIALOG中的已有控件,并重新设计成:显示选择”前打钩,如下图右键“列表控件”选择“建立类向导”如果一开始跳出,如下窗口,点击“取消”IDs"中选择列表控件的ID:“IDC_LIST1”,点击右侧的“Add Variable”按钮。

给列表控件取名为:“m_list”,如下图点击“OK”,左侧的“ClassView”中,“CStudentDlg”里多了"m_list"双击上图中“CStudentDlg”中的“OnInitDialog()”,进入代码编辑,输入如下代码:代码:BOOL CStudentDlg::OnInitDialog(){CDialog::OnInitDialog();//Set the icon for this dialog.The framework does this automatically //when the application's main window is not a dialogSetIcon(m_hIcon,TRUE);//Set big iconSetIcon(m_hIcon,FALSE);//Set small icon//TODO:Add extra initialization here//初始化列表控件的样式与列名m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_E X_GRIDLINES);m_list.InsertColumn(0,_T("学号"));m_list.SetColumnWidth(0,100);m_list.InsertColumn(1,_T("名字"));m_list.SetColumnWidth(1,80);m_list.InsertColumn(2,_T("性别"));m_list.SetColumnWidth(2,50);m_list.InsertColumn(3,_T("住址"));m_list.SetColumnWidth(3,200);return TRUE;//return TRUE unless you set the focus to a control}编译运行结果如下:在"ClassView"中“CStudentDlg"右键,选择“Add Member Function”输入如下“函数类型”与“函数描述”,如下图,点击确定“ClassView”的“CStudentDlg”中新加了“DoListRefresh()”进行数据库连接,右键"ClassView"中的根节点"student classes",选择"New Class"在"Name"里输入类名:“CStudentSet”,"Base class”中选择“CRecordset”,点击“确定”在“ODBC”中选择在之前设置好的数据源“students”选择"dbo.Student"表“ClassView”中多了“CStudentSet”类右键上图“ClassView”中的“CStudentDlg”类,选择“Add Member Variable”“变量类型”与“变量名称”输入“CStudentSet”与“m_set”,如下图编辑运行会有错误,因为少了CRecordSet类的头文件,在左侧选中“FileView”选项卡,双击“Header Files”中的“StdAfx,h”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


• • • •

sp.exe - 7 error(s), 0 warning(s)
若编译预编译产生的C程序,产生上述问题,则 说明没有找到sqlakw32.lib和caw32.lib文 件
C嵌入SQL步骤之四:设置预编译产生的C 编译环境
2.添加SQL Server数据 处理库文件到编译环 境中. • 选择“project” |“Settings”,然后在对 话框中选中项目文 件. • 在“Object/library modules”编辑框中输 入两个与SQL Server 有关的两个库 文件:sqlakw32.lib caw32.lib 注意:这两个文件在sql server安装盘的某个 目录中,它可能没有 被安装到系统中,需 要从Sql Server安装 盘拷贝到include指定 的某个目录中.一般 是在:
EXEC SQL SELECT au_fname INTO :first_name from authors where au_lname = :last_name; printf("\n\n%s\n\n\n", first_name); EXEC SQL DISCONNECT ALL; }
C嵌入SQL步骤之二:设置预 编译环境
C:\Program
Files\Microsoft SQL Server\80\Tools\D evTools\Include C:\Program Files\Microsoft Visual Studio\VC98\Lib
执行嵌入了SQL的C程序产 生的问题
解决方法是将Sqlak32.dll从 Sql server安装盘拷贝到C源程 序所在的目录(此C程序由预 编译器产生)
x:\Program Files\Microsoft SQL Server\80\Tools\ DevTools\Include.
C嵌入SQL步骤之二:设置预 编译环境
7. In the Show directories for box, click Executable files. 8. Enter the path for SQL Server development binary executable files, typically C:\Program Files\Microsoft 7、8两步主要指定嵌入 SQL SQL预编译器 Server\80\Tools\B inn nsqlprep.EXE 文件
C嵌入SQL步骤之一:建立 源文件
源文件:simple.sqc
• 建立嵌 入了 SQL的 C源程 序
– 注意文 件的扩 展名 为.sqc
在VC环 境中输入 的嵌入了 SQL的 源程序
#include <stddef.h> #include <stdio.h> int main(int argc,char** argv,char** envp) { EXEC SQL BEGIN DECLARE SECTION; char server[]="CQUPT-DK.pubs"; char user[]="sa.1"; char first_name[50]; char last_name[] = "white"; EXEC SQL END DECLARE SECTION; EXEC SQL SET OPTION LOGINTIME 10; EXEC SQL SET OPTION QUERYTIME 100; EXEC SQL CONNECT TO :server USER :user;
嵌入SQL步骤之三:预编 译.sqc源文件
• 若预编译.sqc源文件时产生如下问题: --------------------Configuration: sp - Win32 Debug--------• running ESQL/C precompiler • Error executing c:\windows\system32\cmd.exe. • sp.exe - 1 error(s), 0 warning(s)
在C中嵌入sql的方法
操作环境,基于: Vc++6.0 sqlserver 2000
杜茂康 2004-10-2
Installing Embedded SQL for C
Directory \Mssql7\Binn File Nsqlprep.exe Description
Sqlaiw32.dll
Sqlakw32.dll
所在的磁盘位置。此
文件由sql server提供,在 安装SQL Server可能不会 被安装,所以要将此文件从 SQL Server安装盘拷贝到 指定磁盘目录(可在任意目 录中,所以要通过这两步骤 指定它的位置) 拷贝在C:盘根目录下可 行,其它目录常出问题, 未查原因
C嵌入SQL步骤之三:预编 译.sqc源文件
32-bit precompiler for Microsoft® Windows NT® 4.0, Microsoft Windows® 95, and Windows 98 Windows 95, and Windows 98 Run-time services import library for Windows NT 4.0, Windows 95, and Windows 98 C samples
\Mssql7\Dev Tools\Inc lude
Sqlca.h
Sqlda.h \Mssql7\Dev Tools\Li b Caw32.lib
VC中嵌入Sql Server2000Windows NT 数 Precompiler services for 4.0, Windows 95, and Windows 据库访问的SQL 98 Run-time services for Windows NT 的C程序要访问的 4.0, Windows 95, and Windows 98 SQL Server库 SQLCA header 文件、动态链接库、 SQLDA header 头文件及执行文件 SQLCA library for Windows NT 4.0,
x:\Program Files\Micros oft SQL Server\80\T ools\DevTo ols\Include.
C嵌入SQL步骤之二:设置预 编译环境
5. In the Show directories for box, click:
Library files.
6. Enter the path for SQL Server development library files, typically
• To add custom build steps for an ESQL/C source file
1. 选择“ Project”| “ Settings.”菜单 项; 2. 从弹出的对话框中, 选中要预编译 的.sqc源文件 3. 单击 Custom Build tab. 4. 在“Description” 中输入对.sqc源文 件的预处理方法: running ESQL/C PRECOMPILER 5. 输入预编译器命令 及预编译源文件. 6. 预编译后产生的C程 序源文件名. 7. 做好前面所有的设 置后,编译该嵌入 SQL的.sqc程序, 系统将产生 “Outputs”输出框 中指定的c程序.
பைடு நூலகம்
Sqlakw32.lib
\Mssql7\Dev Tools\Sa mples\E sqlc \Mssql7\Dev Tools\Li b
*.*
Ntwdblib.lib
DB-Library used for communicating with SQL Server. This is part of DB-Library development tools.
此问题的解决方法:将Sql Server 安装盘中的sqlaiw32.dll拷贝到源文 件所在的目录。
C嵌入SQL步骤之四:设置预编译产生 的C编译环境
对于预 编译产 生的C 源文件: 1.将产生 的.c源 文件添 加到工 程项 目.
编译产生预编译产生的C程序的 问题
• • • • • • • --------------------Configuration: sp - Win32 Debug------------------Compiling... sp.c Linking... sp.obj : error LNK2001: unresolved external symbol _sqlasetv@28 sp.obj : error LNK2001: unresolved external symbol _sqlaaloc@16 sp.obj : error LNK2001: unresolved external symbol _sqlastop@4 sp.obj : error LNK2001: unresolved external symbol _sqlxcall@24 sp.obj : error LNK2001: unresolved external symbol _sqlastrt@12 sp.obj : error LNK2001: unresolved external symbol _sqlca Debug/sp.exe : fatal error LNK1120: 6 unresolved externals Error executing link.exe.
• 设置SQL.sqc的 预编译环境 1. 选择VC的 “tools”| “options”菜 单项. 2. Click the Directories tab. 3. In the Show directories for box, click Include files. 4. Enter the path for Microsoft® SQL Server™ 2000 development include files, typically
相关文档
最新文档