- 论坛徽章:
- 0
|
问题是这样的:
我用sybase 的client-library 用c语言编了个客户端程序,主要就是连接服务器,运行1个use adatabase命令,和1个select 语句,然后读取返回的数据。
因为连接到服务器之后默认的数据库是master,所以必须先运行use adatabase。
我发现第一个语句能正确运行,但是第二个select语句就会报错,错误出在ct_send(command)。
但是如果我不运行use语句,直接select一下master数据库中的syslogins表格 ,则运行正常。真是怪了。
这是为什么呢?
程序如下:
<code>
int main(int argc,char **argv){
CS_CONTEXT *pContext;
CS_CONNECTION *pConnection;
CS_COMMAND *pCommand0;
CS_COMMAND *pCommand1;
CS_INT dpt_no;
CS_RETCODE ret;
CS_CHAR *sqlstring0="use AABMIS";
CS_CHAR *sqlstring1="select NAME,NO from DEPARTMENT order by NO";
CS_CHAR *sqlstring2="select * from syslogins";
CS_CHAR * server="ysmis";
CS_CHAR * username="sa";
CS_CHAR * password="loginsybase";
long l=0;
init(&pContext);
myconnect(pContext,&pConnection,server,username,password);
ret=ct_cmd_alloc(pConnection,&pCommand0);
exit_if(ret);
ret=ct_command(pCommand0,CS_LANG_CMD,sqlstring0,CS_NULLTERM,CS_UNUSED);
exit_if(ret);
ret=ct_send(pCommand0);
exit_if(ret);
ret=ct_cmd_alloc(pConnection,&pCommand1);
exit_if(ret);
ret=ct_command(pCommand1,CS_LANG_CMD,sqlstring1,CS_NULLTERM,CS_UNUSED);
exit_if(ret);
ret=ct_send(pCommand1);
exit_if(ret);
handle_returns(pCommand1,write_row_results);
clean(pContext,pConnection);
return 1;
}
/*注:省略了部分自定义函数myconnect、clean、handle_returns等*/
</code> |
|