在VC++6.0中嵌入sql的方法[1]
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方法
(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]
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 (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(英文: 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实验指导
实验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连接关于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(课程设计题目)
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”。
一个嵌入式SQL编程实现的教学示例
SQL 语言具有交互式和嵌入式两种使用方式。
而对于嵌入式SQL 的编程,当前流行的《数据库系统原理/概论》教材上,对于ESQL 编程[1]的一般理论知识介绍较全面,而对其上机实现则介绍较少,即使是同一RDBMS 和同一主语言的不同实现版本(如VC++和C++Builder),其具体处理细节也有差别。
本文选用目前广泛应用的Ms SQL Server 2000为RDBMS 实验平台,C 语言为主语言,VC++为开发环境,介绍嵌入式SQL (以下简称ESQL )编程的上机实现。
1嵌入式SQL 的处理过程对于含有嵌入式SQL 的主语言程序,一般是先经RDBMS 的预编译程序对其进行扫描处理,生成不含SQL 语句的主语言源程序,此主语言源程序再经编译程序生成目标代码程序,最后与相关的函数库、运行库等连接生成可执行程序。
其关键之处:一是RDBMS 的预编译程序及其使用,二是编译链接时需要的与SQL 有关的链接库等文件。
2Ms SQL Server 2000的预编译程序及其使用下面以生成Windows95/98/NT 及以上版本下的ES-QL /C 应用程序为例,介绍ESQL /C 应用程序的预编译、编译、链接处理。
2.1预编译所需的处理程序基于Windows95/98/NT 及以上环境下的ESQL/C 预编译程序是nsqlprep.exe ,常用语法格式[2]是:nsqlprep ESQL /C 程序文件名[/SQLACCESS |/NOSQLACCESS][/DB [server_name.]database_name /PASS 邀login[.password]|$IN-TEGRATED妖]命令参数及选项说明:ESQL /C 程序文件名:为要预编译的ESQL /C 程序文件名;/SQLACCESS :为程序中的静态SQL 语句自动生成存储过程;/NOSQLACCESS :不为程序中的静态SQL 语句生成存储过程;/DB [server_name.]database_name :指定为存取规划在其中放置存储过程的服务器和数据库名称;/PASS lo-gin[.password]:指定用于访问SQL Server 和存储过程生成所用的用户标识和密码,用了/DB 选项就必须同时使用/PASS 选项;$INTEGRATED :对login[.password]参数强制使用Windows 身份认证支持。
VC++6.0实现文件数据库SQLITE基本操作
VC++6.0实现文件数据库SQLITE基本操作文件数据库中易操作,嵌入式跨平台的数据库要数SQLite了。
一、外来头文件添加在SQLite网站download一个sqlite-amalgamation-…….zip文件,该文件里面有sqlite3. h头文件;将sqlite3.h复制到建立c程序源文件的目录下。
二、对外来的lib文件的添加在下载页面找到sqlitedll-3_5_4.zip,将其中内容sqlite3.def和sqlite3.dll全部解压出来。
例如到c:盘根目录。
进入命令行进入c:盘如下输入:c:\>lib/def:sqlite3.def就可以生成梦寐以求的lib文件。
1、将生成的sqlite3.lib文件复制到vc安装目录下的Lib文件夹中2、菜单栏里面点“工程”-“设置”,在出现的窗体中中找到“连接”标签栏,在“对象/库模块”填写框里面加入sqlite3.lib。
三、复制到sqlite3.dll文件到c程序源文件目录下做好上述3条就可以实现在源文件目录下生成db文件,并对其进行数据库操作了。
以vc++为例,新建一个控制台程序win32console Application,工程名aap,位置c:\My Projects\aap,接下来建立一个Hello world 文件。
按照上面内容复制h文件、lib文件、dll 文件,添加lib设置。
由于如下代码没有用到stdafx.h,所以需在“工程-设置”中“C /C++”标签栏下第一个分类选中“预编译的头文件”在下面“核选框”中选中第一个“不使用预补偿页眉”。
然后粘贴进入下代码,编译,执行。
#include#include"sqlite3.h"int main(void){sqlite3*db=NULL;char*zErrMsg=0;int rc;rc=sqlite3_open("aa.db",&db);//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件if(rc){fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(db));sqlite3_close(db);}else printf("open aa.db successfully!\n");sqlite3_close(db);//关闭数据库return0;}。
VC++环境下连接SQL_Server数据库方法-实验六
VC++环境下连接SQL Server数据库方法指导实验类型:设计型一、实验环境1.Windows XP操作系统;2.VC++6.0开发环境;3.SQL server 2000数据库管理系统。
二、实验内容和要求利用VC开发应用程序,要求能够通过界面完成对数据库中数据的查询、插入、删除以及修改。
三、实验原理VC访问SQL Server数据库,常用的方法有两种:通过ODBC连接和通过ADO连接。
下面分别介绍一下。
采用ODBC方式要求先创建ODBC数据源,应用程序通过数据源与数据库连接;并且在创建应用程序时,只能是基于单文档或多文档,而无法直接创建基于对话框的应用程序。
采用ADO方式无需创建数据源,应用程序可通过ADO直接与数据库连接;ADO方式可以创建基于对话框的应用程序。
两种方式都要在应用程序中添加代码以完成相应的初始化功能。
四、实验步骤下面通过两个例子分别介绍基于ODBC方式和基于ADO方式的实验步骤。
1 基于ODBC方式的实验步骤(1)在SQL Server2000中创建数据库student,该数据库中有学生表s用来存放学生信息。
s表的创建方法在此不详述。
(2)创建ODBC数据源“开始”--〉“设置”--〉“控制面板”—〉“管理工具”—〉“数据源(ODBC)”,打开之后出现如图1所示窗口。
图1点击“添加”按钮,出现图2。
图2选择SQL Server,点击“完成”,出现图3。
图3名称中填写所创建的数据源的名称,本例中为student,描述可以不填。
因为SQL Server的服务器和客户端均安装在本地计算机上,所以服务器为(local)。
如果本地计算机上只安装了客户端,服务器安装在另外的机器上,服务器为另一台机器的名称。
点击“下一步”,出现图4。
图4SQL Server如何验证ID的真伪,使用哪种方法要看安装SQL Server2000时选择的是哪种验证方式。
如果是Windows验证,选择使用网络登录ID的Windows NT验证;如果是混合验证模式则要选择下面一种。
VC++ 6.0SQL server的开发中的问题总结
4. VC++ 6.0 + SQL server的开发中的问题总结******************************************************************************* ****----------------------------------------------------------------------------------4.1 vSQL字符串的书写----------------------------------------------------------------------------------在使用ADO技术进行数据库的访问时需要通过vSQL的字符串来进行相关功能的实现要注意到的是vSQL是相当于一种CString类型的,所有在对它进行生成时要用到+如str="INSERT INTO record3D(number,xuhao,a,b,c)V ALUES('"+number+"',"+str_xuhao+")" 一句其实是几个字符串连加在一起,分解如下:str1= " INSERT INTO record3D(number,xuhao,a,b,c)V ALUES(' "str2= numberstr3="',"str4=str_xuhaostr5= ")"str=str1+str2+str3+str4+str5;另外各种数据类型要根据SQL语句的要求或需要' '或不需要' '的设置。
----------------------------------------------------------------------------------4.2 SQL server中数据库表名和列名的约束----------------------------------------------------------------------------------有的时候好像SQL语句的书写是没有任何错误的,但是就是会报错提示无法执行执行数据库语句,这时候就应该从数据库的方面来找原因了,在设置数据库中表名和列名时一定要应该不能使用SQL server本身拥有的系统约束名,例如:表名不能以数字开头,不能使用user,no,time等列名不能用: user,no,time等等等。
VC++环境下连接SQL_Server数据库方法指导
图9 这里选择 “查看数据 库不使用文件支 持”,还要选 择数据源,点击 “数据源 …”,弹出 如图 10 所示窗口。
4
图 10 选择“student”数据源,点击“OK”,在弹出的窗口中选择表 dbo.s,点击“OK”返回 图 9 所示的界面。以后的创建步骤中没有需要修改的地方可以直接点击完成。这样工程 exec1 就创建完成了,并且通过数据源与数据库发生了关联。 创建好的工程可以运行,结果如图 11 所示。
11
_RecordsetPtr m_pRecordset; 该指针为整个应用程序共享,所以放在 public 下面。 初始化 OLE/COM 库环境。必须注意的是,ADO 库是一组 COM 动态库,这意味应用 程序在调用 ADO 前,必须初始化 OLE/COM 库环境。在 MFC 应用程序里,一个比较 好的方法是在应用程序主类的 InitInstance 成员函数里初始化 OLE/COM 库环境。 在本例中,在 exec2.cpp 文件的 BOOL CExec2App::InitInstance()成员函数里添加如下代 码:
AfxMessageBox("输入的年龄不符合实际!"); return; } //呈增加状态 m_pSet->AddNew(); UpdateData(); //更新数据库 m_pSet->Update(); //重新获得数据 m_pSet->Requery(); UpdateData(FALSE);
(2)界面设计 在 工 作 区 左 边 的 树 型 结 构 中 , 选 择 ResourceView , 展 开 Dialog 节 点 , 双 击 IDD_EXEC2_DIALOG,打开该对话框。在这里添加所需控件。如图 17 所示。
自己总结的嵌入式sql实验步骤
int count = 0;
char yn; /*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): ");
scanf("%s", deptname); /*为主变量deptname赋值*/
if (yn == 'y' || yn == 'Y') /*如果选择更新操作*/
{
printf("INPUT NEW AGE:");
scanf("%d",&NEWAGE); /*用户输入新年龄到主变量中*/
EXEC SQL UPDATE Student /*嵌入式SQL*/
nsqlprep exec.sqc /SQLACCESS /DB ZRZ-251D35F4FB0.xuesheng /PASS zhxfhx.zhxfhx
注意:此时一定要有zhxfhx用户并且设置密码为zhxfhx 且要有对表xuesheng.student中应该有的权限.
3、使用Vc++进行编译,在文件菜单中打开编译好的exec.c文件
4、添加库文件:工程—>设置—>Link—>对象/库模块
project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。
printf("\n%-10s %-20s %-10s %-10s\n", "Sno", "Sname", "Ssex", "Sage");
使用嵌入式SQL访问数据库
一
、
引 言
’
作为关 系数据库广泛使用的语言 S L Q ,其 表 达 能力 与 高 级 语 言 相 比 有 一 定 的 限 制 ,有 些 数 据 访 问 单 纯 使 用 S L无 法 完 Q 成 。 一方 面 ,S L在 逐 渐 增 强 自己 的 表达 能力 ,另 一方 面 ,太 Q 多 的 扩展 会 导 致 优 化 能 力及 执行 效 率 的 降 低 。 而 且 实 际 的 应 用 系统 是非 常 复 杂 的 ,数 据 库 访 问 只 是 其 中 一 个 部 件 。 有 些 动 作 如 与 用 户 交互 、图形 化 显示 数 据 等 只能 用 高 级 语 言 实 现 。 在 高 级 语 言 中 使 用 S L访 问 S L数 据 库 主 要 有 两 种 方 Q Q 法 ,一 种 是 通 过 S L调用 层 接 口 ( L) ,另 一 种 是 使 用 嵌 入 Q CI 式 SL Q 。本 文 对 S L调 用 层 接 口只 做 简 单 介 绍 , 主要 讨 论 嵌 入 Q 式 S L的使 用 。 Q
} 、 } 。 ,
.
ti hs一> e Mo ie Fa ' S t df d lg( : i ) )
、
,
上 面 代 码 实 现 了 元 件 的绘 制 。最 终 绘 制 是 调 用 元 件 类 本 身
的 pit( ,Y D r n X ,p C)来实现 。到此编辑模 块程序 已实现 。下
维普资讯
l 。
使 硪靛 入茸 S L Q
l ' l| l 薹
。
.
据 库
' l _
_
饕
摘 要 本 文 阐述 了使 用嵌入 式 S L访 问数据 库 ,介 绍 了嵌 入 式 S L使 用 的一般 方 法 ,并 Q Q 给 出 了一 个利 用 V 6 0在 C语 言 中使 用嵌入 式 S L访 问 O a l 数 据 库 的 实例 。 C . Q rce
在C语言中嵌入SQL语句
在C语言中嵌入SQL语句1.将安装盘下的个人版的目录DEVTOOLS 与个人版目录下的X86目录下的binn两个文件夹复制到安装目录下2.初始化Visual C++ 6.0编译器环境。
直接在该目录下双击运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
3.初始化SQL Server的预编译环境。
直接在该目录下双击运行文:\Devtools\samples\esqlc\setenv.bat。
4.VC++6.0环境配置。
具体配置分为如下三步[:①Tools->options->directories->Include Files:添加C:\ProgramFiles\Microsoft SQL Server\devtools\include。
将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。
将开发用到的包包含到工程中。
③选中工程名,点击project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib,Caw32.lib。
这两个文件之间用空格分开。
5.预编译SQL Server的预处理程序是nsqlprep.exe。
nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下注:下图中添加的路径也就nsqlprep.exe 的安装路径。
选择工具----选项----目录可执行文件,将nsqlprep.exe文件所在路径加入拷贝在C:盘根目录下可行,其它目录常出问6.建立源文件*.sqc#include <stddef.h>#include <stdio.h>int main(int argc,char** argv,char** envp){EXEC SQL BEGIN DECLARE SECTION;char server[]="LENOVO-7B3FC046.mysqllp1";char user[]="sa";char first_name[50];EXEC SQL END DECLARE SECTION;EXEC SQL CONNECT TO :serverUSER :user;EXEC SQL SELECT sname INTO :first_namefrom student;printf("\n\n%s\n\n\n", first_name);EXEC SQL DISCONNECT ALL;}以下图片是在选中.sqc文件所操作的ESQL/C source fileCustom Build程输出框中其中命令框中输入的是nsqlprep 文件名.sqc7.编译运行在VC++6.0中创建一个"WIN32 Console Application"的Proiect,然后将预编译生成的c 文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。
实现C语言嵌入式SQL程序环境配置范文
实现C语言嵌入式SQL程序的环境配置嵌入式SQL的C语言应用程序在VC++6.0、SQL Server 2000环境下的调试可分为五步:第一步环境初始化;第二步预编译;第三步编译;第四步连接;第五步运行。
1、环境初始化(1) 将文件夹devtools复制到SQL Server的系统目录C:\Program Files\Microsoft SQL Server\(或在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。
)(2)初始化Visual C++ 6.0编译器环境。
在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的预编译环境。
在命令行方式下运行文件: C:\Program Files\Microsoft SQL Server\DEVTOOLS\SAMPLES\ESQLC\setenv.bat。
( 4) VC++6.0环境配置。
具体配置分为如下三步:①单击菜单中Tools(工具)->options(选择)->directories(目录)->Include Files:添加C:\Program Files\Microsoft SQL Server\devtools\include。
将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools(工具)->options(选择)->directories(目录)->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。
将开发用到的包包含到工程中。
③project(工程)->Settings(设置)->Link->Object(对象)/Library Modules(库模块),添加库文件:SQLakw32.lib,Caw32.lib。
嵌入式SQL+VC配置参考
1、环境初始化(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把\SQL Server 2000\SQL2000_PER\devtools 解压到C:\Program Files\Microsoft SQL Server\80\Tools\DevTools目录下(即文件夹devtools中的所有文件)这里假设SQL Server安装在C盘(或在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL 语言准备必要的头文件和库文件。
)(2) 初始化Visual C++ 6.0编译器环境。
在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
或(\VC98\Bin)(3) 初始化SQL Server的预编译环境。
在命令行方式下运行文件:\devtools\samples\esqlc\setenv.bat。
(需要先解压unzip_esqlc.exe)(4) VC++6.0环境配置。
具体配置分为如下三步:①Tools->options->directories->Include Files:添加 C:\ProgramFiles\Microsoft SQL Server\80\Tools\DevTools\include。
将SQLserver自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\ProgramFiles\Microsoft SQL Server\80\Tools\DevTools\x861ib。
将开发用到的包含到工程中。
③要在编译之前做的:project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib Caw32.lib。
嵌入式SQL语言在VC中的实现
嵌入式SQL语言在VC中的实现
丁益祥
【期刊名称】《武汉纺织大学学报》
【年(卷),期】2003(016)004
【摘要】介绍在VC++6.0中使用嵌入式SQL语言访问Microsoft SQLS Server 2000数据库的编程实现方法.
【总页数】3页(P40-42)
【作者】丁益祥
【作者单位】武汉大学,计算机学院,湖北,武汉,430072
【正文语种】中文
【中图分类】TP311
【相关文献】
1.嵌入式SQL语句在VC++数据库系统开发中的技巧 [J], 倪英俊;王命延
2.GKD-Base中嵌入式SQL的设计与实现 [J], 晏庆;阳国贵;陈宏盛;景宁
3.OSCAR中嵌入式SQL的设计与实现 [J], 黄晓燕;杨子江;董金祥
4.一种嵌入式SQL语言在VC++中的实现方法 [J], 颜昌学
5.从扬雄《方言》看秦晋方言在汉代通语中的地位 [J], 张世方
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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