⑴ c中 使用嵌入式 sql需要加载什么头文件和库
嵌入式SQL程序的VC+SQL server 2000实现的环境配置
嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化;2、预编译;3、编译;4、连接;5、运行。下面就其中重要的的操作方法给以详细说明。
1、环境初始化
(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件);如果操作系统安装在C盘,则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的预编译环境。在命令行方式下运行文件:\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 Moles,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。
2、预编译
C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。
Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.
预编译程序nsqlprep的常用语法为:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.
下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)
#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
char first_name[40];
char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s \n",first_name);
}
在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
则生成demo.c,将该文件添加到VC工程中编译即可。
3、编译,连接与运行
在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11;尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:
方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。
方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值;新路径与已有路径间用;间隔。
注意调适程序时,文件名中不要包含cursor,否则可能会出错。
⑵ DB2 SQL0956C 问题
db2 => ? sql0956c
SQL0956C 数据库堆中没有足够的存储器可用来处理语句。
说明:
使用了数据库的所有可用内存。
不能处理该语句。
用户响应:
接收到此消息时,终止应用程序。
增大数据库配置参数 dbheap 的值以允许更大的数据库堆。如果 I/O 服务器数接
近最高限制,那么减小此数目可能也会有所帮助。
如果 dbheap 数据库配置参数已设置为 AUTOMATIC,您将需要增大
DATABASE_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理
器配置设置的值。
更新配置参数时,建议更改这些参数的值。每次将它们增大当前大小的 10%,直
到错误情况得到解决为止。要更改 dbheap,请输入一个类似如下的命令,该命令
对数据库 样本 将 dbheap 设置为 2400:
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
要在已与数据库断开连接的情况下更改 dbheap,请输入一个类似如下的命令:
db2 CONNECT RESET;
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存
需求将超过机器上配置的内存量。可以采用的解决方案包括减少数据库工作负载
、启用连接集中器功能部件或者向机器添加更多内存。
sqlcode: -956
⑶ db2 SQL1390C 环境变量 db2instance未定义
解决方法:
1.在运行中输入"CMD",进入命令窗口
2.输入如下命令:db2icrt db2
3.输入如下命令:set db2instance=db2
⑷ sql数据库置疑,错误代码926,请问要如何修复
请输入你的答案...
数据库926错误解决方案在做任何操作前首先备份数据库的数据文件和日志文件!以及最新的备份文件!第一种解决方法:先删除报错数据库,再新建一同名数据库,然后暂停Service
manager(及sql
server
服务)
,删除库文件和日志文件再启动Service
manager
,使用单数据文件恢复数据库命令恢复数据库。例:打开sql
server/tools/sql
server
query
analyzer
执行下面操作
EXEC
sp_attach_single_file_db
@dbname
=
'pubs',
@physname
=
'c:\mssql7\data\pubs.mdf'
说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubs.mdf’为要恢复的数据库的库文件的具体路径和文件名称。再重新启动一下service
manager
,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。第二种解决方法:打开sql
server/tools/sql
server
query
analyzer
执行下面操作
USE
MASTER
GO
sp_configure
'allow
update',1
RECONFIGURE
WITH
OVERRIDE
GO
UPDATE
sysdatabases
set
status
=
32768
WHERE
name
=
'db_pos363'
GO
sp_configure
'allow
update',0
RECONFIGURE
WITH
OVERRIDE
GO
说明:'db_pos363'是要修复的数据库名称。执行完毕再重启一下Service
manager打开数据库看是否处于紧急状态!再从另一装有sql
2000的机器上连接报错的数据库,然后再在sql
2000的机器上新建一数据库,再使用sql
2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!在导入选项中注意以下几项:
1,
导入方式选择分‘从源数据库复制表和视图’以及‘从sql
server数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表!
2,
当选择‘从sql
server数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sql
server
登陆;C,复制对象及权限。
3,
在使用‘从sql
server数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!导入成功后再删除sql
server
7.0机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql
2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项!
⑸ sql时间差小于4小时
SQL查询时间间隔需求:
1、将操作时间与当前时间做对⽐,时间显⽰规则如下:
a、时间差≤1⼩时,显⽰“刚刚”
b、1⼩时<时间差≤24⼩时,显⽰“N⼩时前”,N代表时间数划算成⼩时单位的整数部分;
c、时间差>24⼩时,显⽰“N天前”,N代表时间数换算成天单位的整数部分
select
case
when TIMESTAMPDIFF(MINUTE, t1.update_date, now()) <= 60
then '刚刚'
⑹ 数据库标准语言SQL和C语言、C++语言的关系是什么
没有直接关系。 SQL语句可以嵌入到C或C++中,实际上,即使是这种嵌入,他们也和C和C++没什么直接关系。 这些SQL语句最终还是要传到数据库引擎里,由数据库引擎完成相关操作。
⑺ SQL就是C语言吗两者有什么区别
不是,SQL是数据库,C是编程语言。不是一个概念
⑻ sql语言具有两种使用方式分别称为什么
SQL语言具有两种使用方式,分别称为交互式SQL和A 提示式SQLB 多用户SQLC 嵌入式SQLD 解释式SQL分值: 2
⑼ 有关sql90说法正确的是
有关sql90说法正确的是SQL是一种结构化和过程化相结构的语言。sql90是C语言的一种表达。结构化语言是专门描述一个功能单元逻辑要求的。它不同于自然语言,也区别于任何特定的程序语言(VB、VC),是一种介于两者之间的语言。