社区
C语言
帖子详情
純DOS下連接數據庫--急-在綫等
yqwd911
2006-06-02 11:09:33
向高手求救
有沒有人在純DOS下用C寫過連接數據庫的程序
指點一下(連Oracle和SQL server都可以)
1)是否要安裝DOS下的客戶端(什麽版本從哪裏獲取)
2)如何配置
3)在C中如何引用,連接語句如何寫
4)sql語句如何執行。
以前只做過window下VB的開發 C和DOS都沒用過。
高手指點。
先謝謝了!
...全文
719
29
打赏
收藏
純DOS下連接數據庫--急-在綫等
向高手求救 有沒有人在純DOS下用C寫過連接數據庫的程序 指點一下(連Oracle和SQL server都可以) 1)是否要安裝DOS下的客戶端(什麽版本從哪裏獲取) 2)如何配置 3)在C中如何引用,連接語句如何寫 4)sql語句如何執行。 以前只做過window下VB的開發 C和DOS都沒用過。 高手指點。 先謝謝了!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yqwd911
2006-06-21
打赏
举报
回复
問題還沒有解決,但是謝謝大家的熱心!
yqwd911
2006-06-16
打赏
举报
回复
不夠強,所以求大家幫忙
yqwd911
2006-06-13
打赏
举报
回复
怎麽寫中间层的服务有沒有例子??
yulinlang
2006-06-13
打赏
举报
回复
安装SQL Server的develop tools,没研究过里面有没有for dos的
yulinlang
2006-06-13
打赏
举报
回复
根本不许需要在DOS下装什么客户端,何况现在也没有。
你需要的能提供在DOS下访问Oracle的函数库,仅此而已。不过好像现在也没有,原来低版本的不知道是否提供。
实在不行只能自己写个中间层的服务,转换一下了。
yqwd911
2006-06-13
打赏
举报
回复
有人有更好的建議嗎?
hemiya
2006-06-13
打赏
举报
回复
如果够强,自己写code.hehe
HKSoft
2006-06-07
打赏
举报
回复
建议用Pro C/C++
yqwd911
2006-06-07
打赏
举报
回复
To 51365133(渊海)
如果是FOXbase,那麽要怎麽做呢?
yqwd911
2006-06-05
打赏
举报
回复
To 51365133(渊海)
謝謝你提供的資料。但是我的客戶端是純DOS。
安裝什麽Oracle客戶端?
怎麽設定?
你知道在純DOS下安裝的Oracle客戶端從哪裏可以獲取?
51365133
2006-06-05
打赏
举报
回复
建议楼主看下,我写的这个配置环境,按照上边的步骤,我是实现了.
Por*C/C++ --开始 - mac
pro*C/C++ --> 将源程序中的内嵌SQL转变为C/C++代码(预编译)
c/c++ --> 编译和链接C++代码
使用预编译器开发内嵌SQL程序的步骤
1·编写预编译源程序:.pc,在该预编译源程序中包含了内嵌SQL和PL/SQL;
2·预编译源程序,生成C/C++源文件:.c/.cpp,将内嵌的SQL和PL/SQL代码转变为对SQLLIB(Oracle运行库函数)的调用;
3·编译C/C++源文件,声称目标代码:.obj;
4·连接.obj和SQLLIB运行库,生成可执行文件:.exe
5·运行并调试.exe文件。
环境搭建
1·安装Oracle9i客户端Pro C-C++
注意查看是否已安装
2·安装VC++
先安装Oracle后,就可以在VC中省去设置一些东西
3·使用配置文件 pcscfg.cfg:
在 %oracle_home%precompadmin 下,用记事本打开,添加常用的预编译选项,比如:
parse=full ----要解析院文件的所有语法
include=f:oracleora92precomppublic
include=f:oracleora92ociinclude
include=d:VC98include
4·使用 procui 进行预编译
这一步放在 Pro*C/C++ 与 VC 环境集成时说
5·在 VC 中运行
在VC中使用Pro*C/C++预编译器
(如果先安装了Oracle再安装的VC,可以省去这一步)工具-选择-目录,选择 Executable files,添加: %oracel_home%bin
指定Pro*C/C++头文件的路径
工具-选择-目录,选择 Include files,添加:
%oracel_home%precomppublic --- Pro*C/C++头文件的路径
%oracel_home%ociinclude --- oci头文件所在路径
建立工程文件
·要建立 Win32 Console Application;
·然后在Source file里添加.PC和.C文件;
·然后在Source file里添加orasql9.lib,在%oracel_home%precomplib 中;
让VC自动预编译.pc文件(不用在pc环境下)
选中.pc文件,单击右键setting,命令中输入 proc $(InputDir)(InputName),输出中输入 $(InputDir)(InputName).c
把oracle的Pro C-C++添加到VC中
工具-定制-工具,空白处写上 Pro*C/C++,命令写:procui.exe,参数写:$(TargetName),初始化目录选项:$(WkspDir),然后就可以在工具菜单中看到了。
其他一些
---当编写支持C++的P+++C/C++源程序时,必须将预编译选项的CODE设置为CPP。这样在预编译以后,会生成和C++完全兼容的函数原形。
---内嵌SQL的续行符:
---注意分隔符,C/C++用‘’来分隔字符,用“”来分隔字符串;内嵌SQL用‘’分隔字符串,“”表示内容区分大小写,比如表名。
--------------------
---操作 SQL操作符 C操作符
非 NOT !
与 AND &&
或 OR ||
等于 = ==
51365133
2006-06-05
打赏
举报
回复
yqwd911(windy) ( ) 信誉:100 2006-6-2 15:59:38 得分: 0
先謝謝jixingzhong提供的資料
我研究一下。
順便問一下#include <sqlca.h> 這個Sqlca.h是C的標準lib嗎?
不是标准的,这是数据库中带的,
你安装Oracle后,会有一些头文件,你用PRO*C就可以直接的连接这些头文件,具体的写的方式和jixingzhong 提供的差不多.
#include "Zaoan.h"
int main(int argc, char* argv[])
{
// update zaoan progress
EXEC SQL update sslmg_salesdate
set sslmgsal_zaoanprog = 100
where sslmgsal_saldate = to_date(:szSaleDate,'yyyymmdd');
EXEC SQL update sslmg_salesdate
set sslmgsal_zaoancd = rpad(substr(sslmgsal_zaoancd, 1, 7), 8, '0') ;
EXEC SQL COMMIT WORK RELEASE;
sprintf(g_szEsmlogMsg, PROGRAM_END_MSG, "Zaoan");
comOutputEsmlog(szLogFile,
"Zaoan",
ESMLOG_INFO,
PROGRAM_END_ID,
g_szEsmlogMsg);
return(GMS_RETURN_NRML);
}
int connect_db()
{
// Config of database
strcpy((char *)username.arr, sInitVariable.szDBUser);
strcpy((char *)password.arr, sInitVariable.szDBPwd);
strcpy((char *)database.arr, sInitVariable.szDBName);
username.len = (unsigned short)strlen((char *)username.arr);
password.len = (unsigned short)strlen((char *)password.arr);
database.len = (unsigned short)strlen((char *)database.arr);
// Connect to DB
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :database;
return (0);
}
这是调用Oracle的例子.你看下吧.
yqwd911
2006-06-05
打赏
举报
回复
問題還沒有解決,高手們繼續幫忙呀
51365133
2006-06-05
打赏
举报
回复
我以前知道一个系统是纯DOS的她们好像用的是FOXBASE数据库.
yqwd911
2006-06-03
打赏
举报
回复
To jixingzhong
能不能在指点一下
happytang
2006-06-02
打赏
举报
回复
肯定要装客户端的
除非有低版本的。。。
yqwd911
2006-06-02
打赏
举报
回复
To jixingzhong
這個SAMPLE是什麽數據庫?
看你寫的好像意思是在sqlca中配置了如何連接SAMPLE,是這個意思嗎?
那麽是怎麽配置連接到SAMPLE的?
robin_yao
2006-06-02
打赏
举报
回复
不知道DB-Library行不行
yqwd911
2006-06-02
打赏
举报
回复
先謝謝jixingzhong提供的資料
我研究一下。
順便問一下#include <sqlca.h> 這個Sqlca.h是C的標準lib嗎?
jixingzhong
2006-06-02
打赏
举报
回复
嵌入SQL,仅供楼主参考 ~
连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>
EXEC SQL INCLUDE SQLCA; (1)
main()
{
EXEC SQL BEGIN DECLARE SECTION; (2)
char firstname[13];
char userid[9];
char passwd[19];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample; (3)
EXEC SQL SELECT FIRSTNME INTO :firstname (4)
FROM employee
WHERE LASTNAME = 'JOHNSON';(4)
printf( "First name = %s\n", firstname );
EXEC SQL CONNECT RESET; (5)
return 0;
}
上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分:
(1)中的include SQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。
(4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。
(5)最后断开数据库的连接。
从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”。
加载更多回复(9)
什么是ECS框架?讲解 + 实战带你入门ECS框架
ECS框架简述+实战
初探unity中的ECS
ECS是一种软件架构模式,就像MVC一样。ECS最早在游戏《守望先锋》中提及到的。ECS具体是指实体(entity)、 组件(component)和系统(system):实体:实体是一个ID,它是一个唯一的标识符,用于标识一个对象,它本身不包含任何数据,只是一个ID,它的作用是用于标识一个对象,它的数据是由组件来提供的。组件:组件是一个数据结构,它包含了一些数据,用于描述一个对象的属性,组件是没有任何行为的,它只是一个数据结构。系统:主要用户逻辑处理,进行状态迁移。系统中不保留数据,且是无状态的。
Unity ECS(一)了解ECS与DOTS
本文转自Unity Connect官方博主 EntherVarope ECS是什么?可以做什么?为什么ECS成为我的选择? 什么是ECS(实体组件系统)? 其实ECS的概念早就诞生了,但是它是因为守望先锋才逐渐被人所知。(暴雪的守望先锋是基于ECS模式设计的,用于改善在大场景下多角色运算的效率) ECS是一种软件架构模式,由三个元素组成:实体(Entity),组件(Component)和系统(Sy...
云计算之ECS
块存储是阿里云为云服务器ECS提供的块设备产品,具有高性能和低时延的特点,支持随机读写。您可以像使用物理硬盘一样格式化并建立文件系统来使用块存储,满足大部分通用业务场景下的数据存储需求。注意:本地盘是物理磁盘直通给ECS使用,是单物理磁盘,没有Raid,存在丢失数据风险。对数据不敏感的业务可以选用快照是某一时间点云盘数据状态的备份文件。云盘创建的第一份快照是创建时间点云盘上所有数据块的全量快照,不备份空数据块,后续创建的快照均是增量快照,仅备份上一个快照以来有变化的数据块。
Unity新版ECS框架简介:ECS有什么不同?
https://www.fgba.net/sitemap.xml
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章