有谁玩过C调用存储过程并输出结果集!

you_tube 2010-04-30 03:01:07
有谁玩过C调用存储过程并输出结果集!
我现在输出的结果只能是8位byte类型的数据,如图:
...全文
259 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a635400052 2012-07-18
  • 打赏
  • 举报
回复
看不懂··
wchl163 2010-05-02
  • 打赏
  • 举报
回复
没有玩过
langman6 2010-05-02
  • 打赏
  • 举报
回复
真的还没有这样弄过。
abcdef1111111 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 you_tube 的回复:]
C/C++ code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <sybfront.h>
#include <sybdb.h>
#include "sybdbex.h"

#define FMTSTR "%-8.8s %-8.8s %-8.8s %-8.8s\n"
#defin……
[/Quote]学习,本来C语言就没学好,呵呵
fred_guo_xf 2010-04-30
  • 打赏
  • 举报
回复
大材小用
--小F-- 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 you_tube 的回复:]
C/C++ code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <sybfront.h>
#include <sybdb.h>
#include "sybdbex.h"

#define FMTSTR "%-8.8s %-8.8s %-8.8s %-8.8s\n"
#defin……
[/Quote]


感觉眼前一团黑 什么都不知道了
you_tube 2010-04-30
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <sybfront.h>
#include <sybdb.h>
#include "sybdbex.h"

#define FMTSTR "%-8.8s %-8.8s %-8.8s %-8.8s\n"
#define FMTSTR1 "%-8.8s %-8.8s %8.8d %8.8s\n"

/* Forward reference
*/
void doexit(char *);

int
main(int argc, char *argv[])
{
LOGINREC *login;
DBPROCESS *dbproc;
int i;
int numrets;
DBINT param1 = 1;
DBINT param2 = 2;
DBINT param3 = 3;
DBINT param4 = 4;
RETCODE return_code;

printf("Demo of SQL queries in a command batch\n\n");
fflush(stdout);

/* Initialize DB-Library. */
if (dbinit() == FAIL)
{
exit(ERREXIT);
}

/*
** Install the user-supplied error-handling and message-handling
** routines. They are defined at the bottom of this source file.
*/
dberrhandle((EHANDLEFUNC)err_handler);
dbmsghandle((MHANDLEFUNC)msg_handler);

/*
** Allocate and initialize the LOGINREC structure to be used
** to open a connection to ASE.
*/
login = dblogin( );
DBSETLUSER(login, USER);
DBSETLPWD(login, PASSWORD);
DBSETLAPP(login, "rpcexample");

dbproc = dbopen(login, "demo");

/* Make the rpc. */
if (dbrpcinit(dbproc, "proc_getcardinfor", (DBSMALLINT)0) == FAIL)
{
doexit("dbrpcinit failed.\n");
}

if (dbrpcparam(dbproc, "@cardno", (BYTE)NULL, SYBCHAR, 19, 2,
(BYTE *)¶m1) == FAIL)
{
doexit("dbrpcparam 1 failed.\n");
}

if (dbrpcparam(dbproc, "@ret_code", (DBCHAR)DBRPCRETURN, SYBCHAR, 2, 2,
(BYTE *)¶m2) == FAIL)
{
doexit("dbrpcparam 2 failed.\n");
}

if (dbrpcparam(dbproc, "@compname", (BYTE)NULL, SYBVARCHAR, 10, strlen("@compname"),
(BYTE *)¶m3) == FAIL)
{
doexit("dbrpcparam 3 failed.\n");
}

if (dbrpcparam(dbproc, "@comptype", (DBCHAR)DBRPCRETURN, SYBCHAR, 2, 2,
(BYTE *)¶m4) == FAIL)
{
doexit("dbrpcparam 4 failed.\n");
}

if (dbrpcsend(dbproc) == FAIL)
{
doexit("dbrpcsend failed.\n");
}

if (dbsqlok(dbproc) == FAIL)
{
doexit("dbsqlok failed.\n");
}
else
{
printf("Query secussed.\n");
}

while ((return_code = dbresults(dbproc)) != NO_MORE_RESULTS)
{
if (return_code == FAIL)
{
doexit("dbresults failed.\n");
}

/* Print any rows that may have been returned. */
dbprrow(dbproc);
}

/* Examine any return parameters that may have arrived. */
numrets = dbnumrets(dbproc);
printf("%d return values received.\n\n", numrets);

if (numrets > 0)
{
printf(FMTSTR, "Name", "Type", "Length", "Value");
printf(FMTSTR,
"------------", "------------",
"------------", "------------");
}

for (i = 1; i <= numrets; i++)
{
printf(FMTSTR1, dbretname(dbproc, i), dbprtype(dbrettype(dbproc, i)),
dbretlen(dbproc, i), ((DBCHAR *)(dbretdata(dbproc, i))));

}

if (dbhasretstat(dbproc))
{
printf("Return status = %d\n", dbretstatus(dbproc));
}
else
{
printf("No return status for this command.\n");
}

dbexit();
exit(STDEXIT);
}

void
doexit(char *s1)
{
printf(s1);
dbexit(); /* always call dbexit before returning to OS */
exit(ERREXIT);
}

int CS_PUBLIC
err_handler(DBPROCESS *dbproc, int severity, int dberr, int oserr,
char *dberrstr, char *oserrstr)
{
if ((dbproc == NULL) || (DBDEAD(dbproc)))
{
return (INT_EXIT);
}
else
{
fprintf(ERR_CH, "DB-Library error:\n\t%s\n", dberrstr);

if (oserr != DBNOERR)
{
fprintf(ERR_CH, "Operating-system error:\n\t%s\n", oserrstr);
}

return (INT_CANCEL);
}
}

int CS_PUBLIC
msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate, int severity,
char *msgtext, char *srvname, char *procname, int line)
{
/*
** Ignore the 'Changed database to' and 'Changed language to'
** messages.
*/
if (msgno == 5701 || msgno == 5703)
{
return (0);
}

fprintf(ERR_CH, "Msg %d, Level %d, State %d\n",
msgno, severity, msgstate);

if (strlen(srvname) > 0)
{
fprintf(ERR_CH, "Server '%s', ", srvname);
}

if (strlen(procname) > 0)
{
fprintf(ERR_CH, "Procedure '%s', ", procname);
}

if (line > 0)
{
fprintf(ERR_CH, "Line %d", line);
}

fprintf(ERR_CH, "\n\t%s\n", msgtext);
return (0);
}
Garnett_KG 2010-04-30
  • 打赏
  • 举报
回复
e...
--小F-- 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 you_tube 的回复:]
已解决,,,,哈,,
快来接分哇
[/Quote]

贴出来瞻仰下???
you_tube 2010-04-30
  • 打赏
  • 举报
回复
已解决,,,,哈,,
快来接分哇
永生天地 2010-04-30
  • 打赏
  • 举报
回复
很久没整过c了
--小F-- 2010-04-30
  • 打赏
  • 举报
回复
C调用存储过程??高深..
htl258_Tony 2010-04-30
  • 打赏
  • 举报
回复
没玩过,帮顶
百年树人 2010-04-30
  • 打赏
  • 举报
回复
帮顶,接分,嘿嘿。。。
you_tube 2010-04-30
  • 打赏
  • 举报
回复
现在的结果只能是8位byte类型的数据,后面还有一大串数据没出来,谁有实例发来参考一下哈,,,
附录c 编译程序实验 实验目的:用c语言对一个简单语言的子编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 语法分析 C2.1 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. C2.2 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. C2.2.1待分析的简单语言的语法 实验目的 通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法. 实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 实验的输入和输出 输入是语法分析提供的正确的单词串,输出为三地址指令形式的四元式序列。 例如:对于语句串 begin a:=2+3*4;x:=(a+b)/c end# 输出的三地址指令如下: (1) t1=3*4 (2) t2=2+t1 (3) a=t2 (4) t3=a+b (5) t4=t3/c (6) x=t4 算法思想 1设置语义过程 (1) emit(char *result,char *arg1,char *op,char *ag2) 该函数功能是生成一个三地址语句送到四元式表中。 四元式表的结构如下: struct {char result[8]; char ag1[8]; char op[8]; char ag2[8]; }quad[20]; (2)char *newtemp() 该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,…. Char *newtemp(void) { char *p; char m[8]; p=(char *)malloc(8); k++; itoa(k,m,10); strcpy(p+1,m); p[0]=’t’; return(p); } (2)主程序示意图如图c.10所示。 (2) 函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。 语义分析程序的C语言程序框架 int lrparser() { int schain=0; kk=0; if(syn=1) { 读下一个单词符号; schain=yucu; /调用语句串分析函数进行分析/ if(syn=6) { 读下一个单词符号; if(syn=0 && (kk==0)) 输出(“success”); } else { if(kk!=1 ) 输出 ‘缺end’ 错误;kk=1;} else{输出’begin’错误;kk=1;} } return(schain); int yucu() { int schain=0; schain=statement();/调用语句分析函数进行分析/ while(syn=26) {读下一个单词符号; schain=statement(); /调用语句分析函数进行分析/ } return(schain); } int statement() { char tt[8],eplace[8]; int schain=0; {switch(syn) {case 10: strcpy(tt,token); scanner(); if(syn=18) {读下一个单词符号; strcpy(eplace,expression()); emit(tt,eplace,””,””); schain=0; } else {输出’缺少赋值号’的错误;kk=1; } return(schain); break; } } char *expression(void) {char *tp,*ep2,*eplace,*tt; tp=(char *)malloc(12);/分配空间/ ep2=(char *)malloc(12); eplace=(char *)malloc(12); tt =(char )malloc(12); strcpy(eplace,term ());/调用term分析产生表达式计算的第一项eplace/ while(syn=13 or 14) { 操作符 tt= ‘+’或者‘—’; 读下一个单词符号; strcpy(ep2,term());/调用term分析产生表达式计算的第二项ep2/ strcpy(tp,newtemp());/调用newtemp产生临时变量tp存储计算结果/ emit(tp,eplace,tt,ep2);/生成四元式送入四元式表/ strcpy(eplace,tp); } return(eplace); } char *term(void)/仿照函数expression编写/ char *factor(void) {char *fplace; fplace=(char *)malloc(12); strcpy(fplace, “ ”); if(syn=10) {strcpy(fplace,,token);/将标识符token的值赋给fplace/ 读下一个单词符号; } else if(syn=11) {itoa(sum,fplace,10); 读下一个单词符号; } else if (syn=27) {读下一个单词符号; fplace=expression();/调用expression分析返回表达式的值/ if(syn=28) 读下一个单词符号; else{输出‘}’错误;kk=1; } } else{输出‘(’错误;kk=1; } return(fplace); }
本PDF电子书包含上下两册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页面的使用和周转 2.7 物理页面的分配 2.8 页面的定期换出 2.9 页面的换入 2.10 内核缓冲区的管理 2.11 外部设备存储空间的地址映射 2.12 系统调用brk() 2.13 系统调用mmap() 第3章 中断、异常和系统调用 3.1 X86 CPU对中断的硬件支持 3.2 中断向量表IDT的初始化 3.3 中断请求队列的初始化 3.4 中断的响应和服务 3.5 软中断与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟中断 3.8 系统调用 3.9 系统调用号与跳转表 第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性调度 4.8 系统调用nanosleep()和pause() 4.9 内核中的互斥操作 第5章 文件系统 5.1 概述 5.2 从路径名到目标节点 5.3 访问权限与文件安全性 5.4 文件系统的安装和拆卸 5.5 文件的打开与关闭 5.6 文件的写与读 5.7 其他文件操作 5.8 特殊文件系统/proc 第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 7.6函数sys—connect()——请求连接 7.7报文的接收与发送 7.8插口的关闭 7.9其他 第8章设备驱动 8.1概述 8.2系统调用mknod() 8.3可安装模块 8.4PCI总线 8.5块设备的驱动 8.6字符设备驱动概述 8.7终端设备与汉字信息处理 8.8控制台的驱动 8.9通用串行外部总线USB 8.10系统调用select()以及异步输入/输出 8.11设备文件系统devfs 第9章多处理器SMP系统结构 9.1概述 9.2SMP结构中的互斥问题 9.3高速缓存与内存的一致性 9.4SMP结构中的中断机制 9.5SMP结构中的进程调度 9.6SMP系统的引导 第10章系统引导和初始化 10.1系统引导过程概述 10.2系统初始化(第一阶段) 10.3系统初始化(第二阶段) 10.4系统初始化(第三阶段) 10.5系统的关闭和重引导

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧