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

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

编辑:说三道四文库 发布时间:2017-08-20 04:49
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.*的版本应该是不影响使用的,只是和数据库的具体存储方式有关。
就这样结贴了,分数就大家均分好了。
闪动窗口标题 -VB资料 闪烁的标题栏 -VB资料 实现画面的各种切换方法-VB资料 实现屏幕变暗的效果 -VB资料 实现图像切换效果 -VB资料 提取Win9x拷贝的动画-VB资料 一个图像滤光处理程序-VB资料 一个用VB5.0 实现的鼠标绘图程序 用VB6.0制作画图板 用VB6设计有趣的动画场景 用VB编程绘制网格图像 用VB绘制抛物线动画曲线 用VB绘制正弦动画曲线 用VB实现“百叶窗”的图形特效 用VB实现托盘动画图标 用Visual Basic 定制BMP文件 用Visual Basic的Move方法实现动画效果 用Visual Basic与MS-Draw开发通用作图软件 在VB中获取可执行文件及Windows 95快捷方式的图标 在VB中进行各种图形切换的方法 在VB中制作可滚动的图像显示 在图片上平滑移动文字 -VB资料 VB怎样使程序的标题条闪烁? VB制作图像的Mask图 CWinInetConnection-一个封装了WinInet API函数的类 -VB资料 MODEM通讯意外处理-VB资料 MsComm 文字传输-VB资料 PING一个IP地址(向它发送一个数据包并等待回应) -VB资料 SMTP协议简介 (Simple Mail Transfer Protocol) -VB资料 VB5.0 中远程数据库的访问 VB下如何编写CRC校验程序 Oracle数据库实例和数据文件的问题求助 调查:各位用Lotus开发的时候,对源码如何做版本控制的?效果如何? 请问各位高手现在业界对工作流与电子工单有没有统一的标准? 动态生成STATIC 文本框,把里面的文字都加上下划线,怎么做? 有什么好的类似于QQ的局域网通讯程序???可支持WIN98及WINXP间的通讯!!! 我快晕了,急救! 低手勿入,高手请进,剧难??? 一个程序调试中产生的问题 -------数据接收和发送模式的问题!(非资深程序员勿入)100分只给答的最好的 求救!关于坐标系转换问题 现在很多邮件服务器要身份验证,ASP.NET(C#)的SMTPMAIL类有设置身份验证和密码的属性吗? 怎么在基于对话框的程序中加入一幅bmp作为底图? 刚学java,碰到一问题,请 有空进来看看 showMessageDialog的使用问题 disable mainmenu控件的某个subitem怎样实现 哈哈,需要短信网关IP地址及其源代码的快来顶一下。 sybase12.0安装时的问题??? 怎么样能用asp编写使得IE打开pdf文件?在查询后怎样还能在查询的输入框里面保留查询的输入? 如何使用TreeView进行分级管理 触发器的效率问题! 寻求解决方案 组件刷新问题,UP有分 请问 虚拟目录 和 WEB站点 有什么区别? DBEXPRESS的问题!很简单 请问那里有支持中文好的jsp开发的webmail下载?很急!谢谢大家了! 我如何在程序中切换输入法 怎么把一个COleDateTime类型的变量转成time_t类型(long型)变量? 结构成员这样定义 WCHAR bString[0]; 长度为0有意义吗? 关于DLL中的函数 如何动态分配指针数组? 哪里有关于delphi多线程资料下载? 急!!!SQL2000数据库IMAGE图象数据的存取?????? 这个存储过程怎么写? D7中的这个怎不见了啊-----急急 为什么只能传递两个汉字?有解决的办法吗? 关于DLL文件中的函数 lotus菜鸟请求急就!!!!!!!! 如何动态分配指针数组? 怎样实现点击按钮,将光标所在行的某列参数传到另一个form,显示出另一个表的某条相关记录? 这句话到底有什么含义??? T-SQL连接字符串的操作符号是? 问一个送分问题。 如何得到驱动器信息? (腊肉)欢迎讨论:简体、繁体同界面显示问题 請問在水晶報表里怎樣實現這樣的設計 谁有校友录? 欢迎讨论:简体、繁体同界面显示问题 用VB写了Lable控件,但不知如何把背景是否透明的属性加入 这堆警告是什么意思? 关闭API函数? 怎么按钮的字体的颜色改变不了? 急问吡啶和顺丁烯二酸酐能反应吗?请问顺丁烯二酸酐和吡啶能反应吗? 为什么单缝衍射试验中缝越窄条纹数越多?(请给出数学推导,) 古代的人喝什么水?3Q我个人觉得古代的人大部分喝矿泉水,那时候环境资源没怎么开发,大部分喝山泉,溪水,河水,这些水中都含有一定的矿物质! 在三氯化铝存在下,吡啶与乙酸酐作用生成的产物主要是什么? 泊松亮斑和单缝衍射1.这个亮斑为什么可以说明光有波动性?为什么它是衍射形成的呢?(书上讲的实在没理解)2.单色光单缝衍射时,中间条纹最亮最宽没错,为什么两侧条纹会变窄?3.有关单缝 为什么水永远都喝不腻呢?3Q 实物证据最能够证明的认定是()A存在性B完整性C所有权D计估 关于单缝衍射的疑问单缝衍射可以用传统学说(阵列波面法)解释,但是我有一个疑问,就是波是在不断向前运动的,这一瞬间波峰恰到达屏,下一瞬间就是波的其它部分甚至波谷到达屏,那么它 为什么咪唑比吡啶碱性强? 某同学用加热氯酸钾和二氧化锰的方式来制取氧气,加热前他称得混合物的质量为15g,完全反应后,称得剩余...某同学用加热氯酸钾和二氧化锰的方式来制取氧气,加热前他称得混合物的质量为15g 什么是静压水池 浇花用水怎么选听大家说慎重选择浇花用水很重要,比如说找一瓶子里面放入蛋壳 馒头渣 剩下的饮料 果肉等等 倒入水放置一段时间取其上清液浇花这样好吗 直接把上清液倒入花盆吗?还需要 实验室加热氯酸钾和二氧化锰的混合物共15g制取氧气,待反应完后,冷却称得固体物质10.2g,计算:(1)制得氧气多少克?(2)原混合物中含氯酸钾多少克?(结果精确到0.01) 如果有一只苍蝇落入你的水杯中,你会怎么办? 测气相色谱时使用溶剂必须是色谱纯吗? 为什么氮气中两个氮原子成键是成3个共用电子对? 静压水池向下供水400米处水压是多少 高效液相色谱专用的色谱纯溶剂可以用于气相色谱吗? 共用电子对的形成共用电子对是因为一个原子容易失去电子,另一个容易得到电子(出自百度百科),那么为什么不会形成两个离子而形成了共用电子对呢?两个相同的元素也会形成共用电子对, 最不利配水点与贮水池最低工作水位的静压差怎么算谢谢 气相色谱测定残留溶剂能用稀硫酸吗 在建筑图中有一个房间 叫静压室,它是做什么用的房间? 杂交育种的看图一就行了经过a、b、c过程,后代中矮杆抗病植株中不能稳定遗传的占2/3这句话是否正确我算来算去都不是.好的再加分,我关于F2代的计算结果和你一样但F3的和你不一样,你看看 方便面厂拉出来的碎方便面渣子有何用处? 将15g氯酸钾,二氧化锰混合物加热至无氧气放出 固体质量为10.2g 原混合物中氯酸钾质量分数是多少 高一生物 杂交育种至少要4年?为什么?怎样算一年?解释下/ 高一【氧化还原反应】有关离子共存问题.题目如下图.特别是必要化学反应方程式(A选项的反应方程式要写清楚)】 怎么在EXECL表格中就算几个数据的总和?l例如.就算中间10个数的总和SB请绕开 培育矮秆抗锈病小麦新品种的方法如下:纯种的高秆(D)抗锈病(T)×纯种的矮秆(d)易染锈病选出符合要求的品种.下列有关该育种方法的叙述中,正确的是 [D ] A.过程3为单倍体育种B.过程 我国井水里有什么物质我国南方某些地区的井水之后,井水由澄清变成有少量红棕色絮状沉淀积于缸底,水面上浮着一层绣皮.这两样东西是怎样产生的 怎么在EXECL表格中就算几个数据的总和?l例如.就算中间10个数的总和 求一段数据的总和 死细胞的细胞膜的透过性死细胞的细胞膜是全透性还是失去透过性? 混沌与秩序~英雄战歌,那个英雄最值得购买? 测量结果的表示方法 死细胞细胞膜具有全透性的原因没有了蛋白质运输,为什么反而能通过呢 想变白反倒变黑了~怎么回事?最近白天用美加净珍珠银耳霜,晚上用片仔癀珍珠膏,一个多星期了,这几天发现有明显的黑了一个系号!:crab-1-)怎么回事嘛! 现在每天我还用白醋兑水擦脸.据说美白 线桥法,如果碰到有共用电子对的物质该怎么办? 细胞膜皱缩会使细胞死亡吗?会丧失半透膜的性质吗? 井水含有什么物质?它跟自来水一样吗?我家的井水对洗衣粉、肥皂,很容易过清,用自来水洗干净手上的洗衣粉洗很久都是很滑,但用井水却一瓢水手上的洗衣粉都去掉.为什么呢? 微生物源有毒物质及其毒性效应是什么? 是否存在四对共用电子对的物质?大家知道氮N≡N 有三对共用电子对,所以性质很稳定,那是否存在四对的那? 单缝衍射问题平行单色光垂直入射于单缝,得到一组夫琅禾费衍射条纹,若将缝宽扩大3/5倍,则原第二级明纹的位置变为第_级_答案是第四条暗纹.但最后得到k=16/5 不应该是第三条明纹吗 是不是所有的有毒物质都是微生物构成的? [普通化学]下列全部用共用电子对成健的物质是A>NaOHB>NH4Clc>BF5d>NaCl 求所有有机基本结构的名称,最好有化学结构式.如:呋喃、吲哚、吡啶、哌啶……等等等等,要全面. 微生物如何除去水中有毒物质 单线桥法,如果碰到有共用电子对的物质该怎么办? 嘌呤的标准值是多少? 有毒物质( )叫做食物链的()作用,产生原因有毒物质1()2() 共用三个电子对且形成气态物质是N2吗 把execl里面的所有数字 统一乘以一个数?如图 一种离子能在细胞膜中运输取决于 手机电子证书是什么意思 哪些因素影响细胞膜的完整程度 自来水浑浊里面含有什么物质啊,喝了有什么危害? 国外科学家是怎么证明神的存在的? 温度对细胞膜通透性影响的原因请问温度对细胞膜的通透性的影响是什么原因?是只改变蛋白质的活性,还是还对其他膜上物质有影响?例如磷脂双分子层而且我听说在高温下,磷脂分子之间会 什么叫做一对共用电子对 怎么投水自尽 么水不可以喝拜托各位了 3Q 永嘉一家六口当老鸨栽了非洲多国出现罕见混合型日食克里访开罗寻求修复美埃关系长兴3万株古银杏披“金”衣与青山翠竹浙江富阳万市镇“银杏之秋”开游式在杭常山举行处置村级组织换届群体性突发事湖南三姐弟上学途中遇害 学校:校车司周四“立冬” 接下来雾霾可能会是杭州中央第二轮10巡视组全部进驻 重点纠地方政府放权缓慢遭质疑 官员:有些权男童假装落水致救人者瘫痪 愧疚28年孙杨年初已无证驾驶 负责人称依法处理丁俊晖国锦赛夺冠比肩亨德利 20年来科比魔兽关系如何? 贾米森爆料:他俩香港保安局局长:马尼拉人质事件处理步圈内人曝刘翔赴美实为退役准备 商业利武林CBD将启动推进11大项目 新增孙杨承认无证驾驶 致歉希望给其改正错宁波东钱湖畔800年古塔惊现盗洞 发浙大教授发明“隐身衣” 记者现场看隐印度将发射环火星探测器 否认与华“太乐福:桑德斯的离去令我非常悲伤携程去哪儿联姻,然而天下还是BAT的波什:开季主场比赛多是个优势剑侠情缘手游正式曝光 暂定名《剑侠代巴克利:热火能否突破看怀特塞德当谈论互联网家装的时候,我们该谈些什三星A3、A7后继有“机”,但配置毫2K模拟赛季,勇士抢七胜骑士南斯:向科比喷垃圾话犹如惹恼熊春赏新意,夏闻蝉鸣,秋看落叶,冬望雪丧心病狂之吃西瓜~哥们是柯基附体了么手表也能听音乐!TomTom心率表国分享一个关于女鬼的真实经历(不吓人)詹姆斯:洗澡时也爱听音乐神秘的西游记詹姆斯:我们球队有着长远的目标自行车的年代史应禅师之邀,里弗斯开通推特日本自杀者多选择跳轨了结的背后日本“空宅”如何摇身变“宝宅”【辣评日本】“楼歪歪”事件击碎日本房
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘