说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

ODBC调用sql server 2005 存储过程出错,请大家帮忙看下,给点意见,谢谢。在线等。

编辑:说三道四文库 发布时间:2017-01-21 06:15
HTML文档下载 WORD文档下载 PDF文档下载
通过odbc调用sql server 2005的存储过程,执行一直失败,错误信息:[Microsoft][SQL Native Client]无效的参数类型,S1105, 大家帮忙看看是什么问题。 

代码如下: 

    RETCODE            ret; 
    SQLINTEGER          char_type_input_code = SQL_NTS; 
    SQLINTEGER          cbEnv                = 0; 
    SQLINTEGER          cbCause; 
    
    S32                dwNodeID = 0; 
    S8                  szName[256]; 
    
    S32                iErrCode            = ROK; 

    strcpy(szName, "root"); 

        ret = SQLPrepare(p_stTdatxt->hstmt,(SQLCHAR*) "{?=call p_add_node(?,?)}", SQL_NTS); 

ret = SQLBindParameter(p_stTdatxt->hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, 
            SQL_INTEGER, 0, 0, &dwNodeID, 0, &cbEnv); 

        
ret = SQLBindParameter(p_stTdatxt->hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, 
            SQL_CHAR, TDA_NAME_STANDARD_LENGTH, 0, &>szName, 0, &char_type_input_code); 

//前面的一直是正确执行的。 
//一直到这里执行语句的时候出错。 
        ret = SQLExecute(p_stTdatxt->hstmt); 

        执行结果一直是-1,odbc里面的错误消息提示:[Microsoft][SQL Native Client]无效的参数类型,S1105 

存储过程如下: 

      ALTER PROCEDURE [dbo].[p_add_node] 

@NODE_PID Int, 
@NODE_NAME Varchar(256) 

AS 
INSERT INTO t_testsuit_catalog_treenode 

node_pid, 
node_name 

VALUES 

@NODE_PID, 
@NODE_NAME 
)
第二个参数类型是SQL_VARCHAR,不是SQL_CHAR
UP
引用 1 楼 hhyttppd 的回复:
第二个参数类型是SQL_VARCHAR,不是SQL_CHAR


吼吼
引用楼主 magicianchar 的帖子:
通过odbc调用sql server 2005的存储过程,执行一直失败,错误信息:[Microsoft][SQL Native Client]无效的参数类型,S1105, 大家帮忙看看是什么问题。 

代码如下: 

    RETCODE            ret; 
    SQLINTEGER          char_type_input_code = SQL_NTS; 
    SQLINTEGER          cbEnv                = 0; 
    SQLINTEGER          cbCause; 
    
    S32                dwNodeID = 0; 
    S8             …

参数类型写错了 SQL_VARCHAR不是SQL_CHAR 给LZ一个详细点的连SQL方法

int MiMSSqlODBCConnect(const char *pInstName, const char *pUser,
                       const char *pPWD, SQLHENV &henv, SQLHDBC &hdbc)
{
    SQLRETURN   hRecode;
    char        szConnOption[1024];
    SQLCHAR     szConnStrOut[1024];    
    SQLSMALLINT cbConnStrOut = 0;
    int         nRet = WAVETOP_BACKUP_OK;
    
    /* Allocate environment handle */
    hRecode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);    
    if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
        SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
            "MiMSSqlConnect: SQLAllocHandle failed");
        nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
        goto CLEANUP;
    }
    
    /* Set the ODBC version environment attribute */
    hRecode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);        
    if (hRecode != SQL_SUCCESS &&
        hRecode != SQL_SUCCESS_WITH_INFO) {
        SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
            "MiMSSqlConnect: SQLSetEnvAttr failed");
        nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
        goto CLEANUP;
    }
    
    /* Allocate connection handle */
    hRecode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);    
    if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
        SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
            "MiMSSqlConnect: SQLAllocHandle failed");
        nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
        goto CLEANUP;
    }
    
    /* Set login timeout to 3 seconds. */
    SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)3, 0);
    
    /* connect string */
    if (stricmp(pInstName, "MSSQLServer") == 0) {      
        _snprintf(szConnOption, sizeof(szConnOption), "DRIVER={SQL Server};"
            "server=%s;uid=%s;pwd=%s", 
            g_MiGlobalConf.szHostIP, pUser, pPWD);
    }
    else {
        _snprintf(szConnOption, sizeof(szConnOption), "DRIVER={SQL Server};"
            "server=%s\\%s;uid=%s;pwd=%s", 
            g_MiGlobalConf.szHostIP, pInstName, pUser, pPWD);
    }
    
    /* Connect to data source */
    hRecode = SQLDriverConnect(hdbc, 
        NULL,
        (unsigned char *)szConnOption,
        SQL_NTS,
        szConnStrOut,
        sizeof(szConnStrOut),
        &cbConnStrOut,
        SQL_DRIVER_NOPROMPT);
    
    if (hRecode != SQL_SUCCESS && hRecode != SQL_SUCCESS_WITH_INFO) {
        SLogErrorWrite(APLOG_MARK, APLOG_NOERRNO | APLOG_ERR, NULL,
            "MiMSSqlConnect: SQLDriverConnect failed");
        nRet = WAVETOP_BACKUP_INVALID_SYNTAX;
        goto CLEANUP;
    }    
    
    return nRet;
    
CLEANUP: 
    MiMSSqlODBCClear(henv, hdbc);
    return nRet;
}

void MiMSSqlODBCClear(SQLHENV &henv, SQLHDBC &hdbc)
{
    if (hdbc != SQL_NULL_HDBC) {
        SQLDisconnect(hdbc);
        SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
        hdbc = SQL_NULL_HDBC;
    }
    if (henv != SQL_NULL_HENV) {
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
        henv = SQL_NULL_HENV;
    }
}
恩,sql_varchar和sql_char都是通用的。
错误的原因是因为调用存储过程的时候前面多了一个“?”。

引用 1 楼 hhyttppd 的回复:
第二个参数类型是SQL_VARCHAR,不是SQL_CHAR


在odbc 3.*的版本应该是不影响使用的,只是和数据库的具体存储方式有关。
就这样结贴了,分数就大家均分好了。
欲与谷歌、亚马逊抗衡,苹果推CloudKit拥抱云服务 针对新一代物联网应用 Atmel推全新32位微控制器 实时计算,流数据处理系统简介与简单分析 Cue:秒杀HealthKit,打造自己的家庭医生 新iPhone要来:4.7就够了么?我们还有更大的 Docker迈入云(DockerHub)+端(Docker引擎)时代 《近匠》壹枱智能钢琴:改造音乐行业的新“玩”家 圣何塞Hadoop Summit 2014看点 唯快不破!90后大学生9天完成近670页的Swift语言文档翻译 一周消息树:Java、.NET、Web技术应用特点 苹果生态格局:软硬件之后,iLifestyle才是王道 小米互娱总经理尚进:独立游戏当为发烧而生 哪些编程语言、框架/平台最受企业青睐? 高德LBS应用大赛:百万大奖、千万基金等你来拿! Gartner:有数据有真相 从浪潮看服务器市场走势 PhoneGap 3.5.0发布,不再支持iOS 5和ARM64 “中美青年创客大赛”之“创客·教育论坛” 以创客教育支持创新人才培养 授之以渔,谷歌发布开源秘密武器Kubernetes 炫耀分数已经out!ShareSDK发布游戏内视频录制SDK Android开发者必知的5个开源库 UCloud完成B轮融资5000万美元 Git远程操作详解 《近匠》iMAG:移动应用快速跨平台开发工具 Facebook斥资30亿美元购Snapchat遭拒后,推Slingshot 全球开发者报告:程序媛崛起,企业应用更赚钱! 土豪经济 E人E本发布首款4G安全手机 内忧外患:Android版FuelBand应用来得太迟? MongoDB 2.6.2 发布,大大改进查询功能 清华毕军&华为马云:SDN是学术和产业都看好的领域 向三星和苹果发难:亚马逊FirePhone 3D手机强势来袭 支付宝移动端与NFC芯片商、手机商合作 推出近场支付产品 串口通讯能否用pb做成动态连接库的形式?(急) 怎样使Response.redirect打开一个新窗口 为什么环境变量替换不正确? 怎么打开foxpro中,通过剪切板考过去的图片,dbimage和image控件都不能打开,显示“bitmap is not valid” vaj中如何使用自己的JAR? 怎样改变当前窗口的大小,是当前窗口最大化? 高手争峰 如何把一个log文件读到数据结构中去 请教一个很菜的问题:) 这个程序有什么问题? 怎样做???? 简单问题,可就是搞不定!! 请问jsp中servelet在win2000中的设置方法,需要下载什么类库文件么? 一个新问题,那就是点击工具栏的退出按钮以后只退出当前打开的窗口,而不是整个应用! 如何在 index.htm 中引用 count.asp ? 远程数据库访问的问题--亟待高手们解答 王国荣的电子信箱是哪里? 我的程序生活 先给50分,稍后在加:我正在做一个系统,需要做到每次开机时提醒用户有哪些事情要做! [Tips]获取Memo&Richedit中光标坐标的最简单方法! 急急,如何才能把图片的底色与窗口的底色自然地融为一体? 如何改变按钮的颜色? 在mtml help workshop 中如何制作带上下文关联ID的帮助 调试程序时,控制台程序与直接建立的C++程序有区别吗? 给菜鸟推荐本书 VB调用外部DLL问题 【洗心革面,重新做人,割发断指,庄严声明】 从今以后 kook 不近女色,不灌疯水,以 panda_w 为榜样,苦练VC,研习汇编,做一个 CSDN 的正面典型! 谁有ULTRAEDIT 的注册码 能否推荐几本关于VB提高和关于VB数据库的书 紧急问题,关于SSL通过MS PROXY String类的问题 连接数据库的东东真是奇怪! 如何打开pdm格式文件 ===========灌水传说=========== 奇怪的问题,怎么办? 呵呵,初学者,请多多指教 剖 尸 小问题:自定义组件的显示 怎样打印picturebox中的内容??? 关于Datawindow的Group的问题 谁能告诉我 Delphi6的序列号 紧急问题,关于SSL通过MS PROXY! 请问,如果用ASP作邮件发送,接收的功能,win2k怎么设置????????? 各位大侠,谁用visual age for java3.5 开发过 ejb呀,发个例子及过程给我好吗?没例子,有过程也可以!以分做谢! 哪位大哥能将解一下notify()和wait()的用法 我用delphi做的工程是一个exe+n个DLL的,请问datamodule放哪里合适;请高手们详细讲讲. 如何除去这可恶的标题? 请问如何取得动态数组的维数,换言之如何取得动态数组的值? 1000M,一会儿就满了,怎么回事? 求助!数据管道问题 砌码者最悲惨的事 小红在班级小银行储蓄的钱数是小刚的2分之3,后来小红又存进4元钱,而小刚取出6元钱此时小红的钱数是小刚的钱数的4分之3,现在小刚,小红各储蓄多少元? 买同一个书包,小明花去了他所带钱的5/8,小红花去了她所带钱的3/5求两个人所带钱的比,如果是方程就要把解的过程详细的打出来好么 有一种植物的茎是红色的,叶子是绿色的,请问是什么花啊 小红体重与小亮的比2比3.小亮与小刚体重的体重3比4.那么小红和小刚的体重比是多少 小明和小红一共有250元,当小明花掉他自己的5分之2,小红花掉40元后两人剩下的钱相等求小明原来的钱是多少? 一种红色的花 花朵像纸做的,谢了以后变成暗紫色.叶子有点像南瓜的叶子. 小红的存钱是小刚的三分之二,小红存进4元,而小刚取出6元,这时小红是小刚的四分之三,小红和小刚各?元 小红和小明带同样多的钱去买练习本.小红花光了自己的钱,并向小明借1元钱,刚好买了8本练习本 有绿叶子,还有红叶子,红叶子中间长着黄色的长长的棒棒,是什么花啊? 小红在班级小银行存储的钱是小刚的三分之二,后来小红有存进4元,而小刚取出6元钱小红在班级小银行储蓄的钱数是小刚的三分之二,后来小红又存进4元钱,而小刚取出6元钱此时小红的钱数是 小莉买文具和图书共用去54元,其中买图书的钱数比买文具的2倍还多3元,买文具和图书各用多少元? 透过红色玻璃看黄色的花绿色的叶呈什么颜色 小林在少儿银行存款50元,小刚存款88元,以后小林每月存5元,小刚每月存12元,几个月后小刚存款数是小林存款数的2倍?求算式,急!谢谢 假期里,小莉用一天学习时间的45%看课外书,她每天看课外书时间是90分,小莉每天用于学习的时间有多长?小莉每天用于学习的时间占一天的百分之几? 春天来了 我的月季花叶子由绿变黄了就4月份,原本刚刚全部变绿的叶子开始慢慢变黄,现在全都蔫了.阳光都很好,也不缺水,为什么会这样?该怎么补救?需要加什么肥料?现在的样子就像冬天的那 小红在班级小银行储存的钱数是小刚的3分之2,后来小红又存进4元钱,而小刚取出6元钱此时小红的钱数是小刚4分之3,现在小刚小红储存多少元钱? 一.1.小星和小莉看课外书,小星看了40页,是小莉所看页数的5分之4.小莉看了多少页?2.小星和小莉看课外书,小星看了40页,比小莉所看的页数多4分之1.小莉看了多少页?3.小星和小莉看课外书,小星 这是什么花?特征是:五片黄色的花瓣、喇叭型的样子,花蕊的底是红色;绿色叶子好像小枫叶型. 小红在班级小银行储蓄的钱数是小刚的2分之3,后来小红又存进4元钱,而小刚取出6元钱此时小红的钱数是小刚的钱数的4分之3,现在小刚,小红各储蓄多少元?小红在班级小银行储蓄的钱数是小刚 假期里,小莉用一天学习时间的45%看课外书,她每天看课外书的时间是90分.小莉 绿宝石花叶子黄了 小红在班级小银行里储蓄的钱数是小刚的三分之二,后来小红又存进4元,而小刚取出6元,此时小红的钱数是小刚钱数的四分之三,现在小刚.小红各储蓄多少元? 小莉看一本书,5天看了全书的20%,照这样计算,把剩下的书全部看完还需多少天? 粉掌的花叶怎么变绿了 小红在班级小银行储蓄的钱数是小刚的三分之二,后来小红又存进4元钱,而小刚取出6元钱此时小红此时小红的钱数是小刚的钱数的4分之3,现在小刚,小红各储蓄多少元?要方程和算式不要方程 要 小明和小莉出生于1999年10月份,他们的出生日期不是同一天,但都是星期三,且小明比小莉出生早,两人出生日期之和是22,那么小莉的出生日期是( )A:15日 B:16日 C:17日 叶子由红变绿的是啥花?请问这是什么花 小红的零花钱比小刚多4分之1,小晓的零花钱比小刚的少3分之1.小红和小晓的零花钱相差14元.三人各有零花钱多少元? 小明和小莉出生于1999年12月份他们的出生日他们的出生日不是同一天,但都是星期一 请问大绿叶/红色花朵的花是什么花?(有图)很绿很绿的叶子,叶片比较大 ,高有40厘米左右,开的花是红色的,如图所示.请问这是什么花?该如何培养?昨天在空调房放了一晚第二天早上起来还没 这次考试小红考了98分.小红比小刚的分数的七分之八还多2分.你知道小刚考了多少分吗? 小明和小莉出生于1998年12月份,他们的出生日不是同一天,但都是星期五,且小明比小早,两人出生日期之和是29,那么小莉的出生日期是()A、15号 B、16号 C、17号 D、18号 绿叶慢慢变红的是什么花怎么繁殖? 小红捐360小刚是小红的9分之10小刚捐的是小红的8分之7小刚捐了多少元? 《黄冈小状元》的问题:小明买了2kg梨,共22个;小莉买了3kg梨,共24个,两个人买的梨平均每个各是多少千克?谁买的梨大些? 绿叶黄色花通过红色玻璃滤镜是什么颜色 在一次跳绳比赛中小明跳了92个 小红跳了85个 小刚跳了87个 小敏跳了几个 注.我跳的个数是我们5个的平均数上面的写错了 在一次跳绳比赛中小明跳了92个 小红跳了85个 小刚跳了87个 小敏 【急】小明和小丽出生于1999年12月份,他们的出生日不是同一天,但都是星期五,且小明比小莉出生早,两人出生日期之和是22,那么小莉的出生日期是?(一元一次方程解) 什么花在春天开花 学校举行一分钟跳绳比赛,小红跳了120下,小玲跳的下数是小红的八分之九,小刚跳的下数比小玲少十五分之二小刚跳的下数比小玲少多少下?不用方程 刚买了一盆花,不知道是什么花,请问谁知道这是什么花? 颐和园中大海棠树争奇斗艳地开满了密密层层的淡红的花.缩句为海棠开满了花.还是海棠树开花? 一个数是2和3的倍数这个数是 这两盆花是什么花 什么花秋天、冬天、春天、都可以开花?还适合在班级开的,不容易死…… 今天,小芳穿着新衣服和新帽子高高兴兴去上学.(修改病句) 一个数同时是2 3的倍数,这个是数有什么的特征? 我有一盆花,但是不知道什么名字,请问下这是什么花, “尽管明天下雨,我们还要去爬山.”修改病句卷子上的题目急 2和3的倍数的共同特征是什么 中间叶子是红色的周围是绿色的一年四季都是这样是什么花?中间叶子是红色的周围是绿色的一年四季都是这样!买时老板说是叫富贵什么?不记得了,不知道哪位朋友知道是什么花,知道他的养 看,空中有一道五颜六色的彩虹.(修改病句) 三位同学购物,小明花去钱数的1/2等于小琳花去钱数的1/3,小琳花去钱数的3/4等于军军花去钱数的4/7,结果军军比小明多花93元,他们三人共花了多少钱?急 花像叶子一样是红色的,叶子是绿色的是什么植物,适合什么样的环境生存, 修改病句:明天上午去爬山 小明和小红共带了200元去购物,购完后2人剩下的钱正好相等,已知小明花去的和原来的钱比是3比7,小红花去小红花去的和原来的比是9比13,小明花去多少元 这是什么树?绿色树叶,红色的花 脱下了五颜六色的衣裳 小红花和小明去超市购物,小红买了6个果冻,每个2.1元.小明买了2块巧克力,比你多花3元,每块巧克力多少元 绿色花叶还带红色花叶是什么花?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn