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

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

编辑:说三道四文库 发布时间:2017-10-23 08:52
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.*的版本应该是不影响使用的,只是和数据库的具体存储方式有关。
就这样结贴了,分数就大家均分好了。
防止 Win95 显示严重错误-Delphi资料 改变操作系统日期-Delphi资料 改计算机名-Delphi资料 关闭 Windows-Delphi资料 关闭外部应用程序-Delphi资料 监视剪贴板内容-Delphi资料 检测磁盘是否变化-Delphi资料 检测驱动器容量-Delphi资料 检查驱动器是否就绪:-Delphi资料 建立简单的任务栏应用程序-Delphi资料 将程序放在Windows启动中-Delphi资料 将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 屏蔽系统按键-Delphi资料 屏幕抓字技术揭密(转载)-Delphi资料 启动控制面板-Delphi资料 取得系统所有窗口的方法-Delphi资料 全部窗体可使用鼠标点中移动-Delphi资料 让图像旋转-Delphi资料 热启动控制-Delphi资料 installshield打包时可以加入密码吗? 救命! 怎么在WM_DRAWITEM自画LISTVIEW? 有关txt文件操作的问题? 一个很奇怪的问题,高手请看, 马上给分 那里有更多的skinengine换肤文件? 奇怪的问题,高手请看,马上给分! 怎样给一个OLE控件其内置的事件编写脚本? 请问各位能否将一个VF的数据库方便的转为ACCESS数据库 如何关联一个扩展名到我的程序? 我有一个备注memo的字段,想更新?如何进行? www.ipowerweb.com 的主机怎么样? 高数、线性代数与程序员!!! Sworddx,补分给你 怎么做定时 这个listctrl问题怎么老没有人回答我?????? TQuery为什么没有这个属性? 哥哥们 ,谁能帮我? 高分,谁有奇域外挂? 急急!!winsock 在网速特别慢的时候,发送与发送之间有一个等待时间,这个时间是不一样的!!! 关于表单的先后顺序 万分火急,关于authorware的? 关于用ASP调用SQL 数据库存储过程的问题!高手帮忙 提议:共同作个小项目 急需解决字符串中的千位分割符去除的问题?在线等 修改客户端资料 AUTOCAD2002的授权号在哪里弄呀?? 网站首页跳出一个小广告或者通知的网页大小 初来乍到 怎么才能让DATA控件支持ACCESS2000? 可否推荐几个对考系分有帮助的网站?先谢了。 初学者的问题 项目开发:select,insert,等要不要直接写在程序事件里面,还是要用DW做操作?? 翻一次页需要80秒,有什么好办法提高效率? 将灵魂出卖给Microsoft?还是选择Sun One? 昨天在公车上目睹……(亲身经历) 用什么样的报表、表格控件好呢? 如何插入一个memo备注字段的纪录 ole字段相互负值,该怎样写呢? 关于delphi局部结构变量,初始化问题。这事儿说起来很惭愧。。。。 中软的叫我去作软件外包,请问给为老大我该去吗 为什么不能访问http://www.apache.org/了? [高难问题]如何让asp启动的程序,显示在服务器端,而不光是个进程 迫切需求Dundas Chart FOR ASP.NET 3.1企业破解版 收到了BORLAND寄来的奖品,送分庆祝,请斑竹不要介意! RichText关联的文件怎么保存? 誰能解決"Read failure"的問題﹖送500分。 求更好的文本编码方法 在delphi中如何实现多副jepg图片存储数据库???? SOS!请教一道变态题目 我是头感情上的猪,我不懂的控制我自己的感情。 请问室内公共游泳池的高度一般是多少?我写错了,我指的是层高,从地面到屋顶~不好意思,我的错, 史记中不可能记载的是A.大泽乡起义 B.春秋争霸 C.大禹治水 D.昭君出塞 某农业专业户建造一个形状是直角梯形的苗圃,其邻变借用夹角为135°的两面墙,另外两边用长喂30米的篱笆围起来,设苗圃的垂直于梯形两底的腰长为x,试用解析式将苗圃的面积表示为x的函数 为什么人都会喜怒无常? 有没有人知道“善终”的反义词可以用什么?同上,没有补充了. 要建一个直角梯形的苗圃,两临边用夹角为135的两面墙,另两边总长为30米,若垂直底边的腰长为x米,...要建一个直角梯形的苗圃,两临边用夹角为135的两面墙,另两边总长为30米,若垂直底边的腰长 You Is it right?Hate me,don't want to talk to 请问有没有人知道无处不在的反义词或者类似意思相反的四字词是什么呢 拉面拉第几次有32根面 人是怎样成长的啊?如题 同源染色体怎么数啊 排词成句:吹着 春风 温暖 轻轻地 的 春天 人是怎么样一步一步长大的?人是地球上有智慧的物种. 有丝后期同源染色体怎么数 拉面数学题要拉510根要拉多少次 甲乙丙丁 甲乙朋友 丙丁亲戚 丁乙外人 一晚甲去乙家发生争吵 丙拿小刀切鱼 丁拿飞镖 刻字 不久甲走了乙死了 第二天丙去买鱼 丁不在家 谁杀人了有几种情况 全身包括手和脚都痒,且出现像被蚊子咬过的包,是怎么回事而且挠过之后,会随之其一小片的包最早出现在手上吧,开始觉得手有点痒,像是被蚊子咬了,却没有包,就是略微有一点红. 分裂各期同源染色体数最好能讲的详细点,关于同源染色体的我一直都搞不清急!我指的是减1的间期、前期、中期、后期、末期、和减2的间期、前期、中期、后期、末期的详细说明 SB的中文怎么写啊? 有一位老奶奶在看报,一只蚊子正想要叮她,老奶奶手和脚都没动,为什么蚊子会突然死掉了? 南丁格尔事迹(短文) 囧丁乙.看看,这个象什么~ 琥珀里的蚊子肚子里的血液DNA或RNA的活性能保持多久呢? 请问哪些书是在高中需要阅读并且要考得? sb中文意思是什么? 一个房屋地基为三角形求占地面积一个房屋地基呈三角形状.三角形的边长分别为9米、12米、15米,花园由据地基边界5米之内的土地构成,问房屋连同花园共占地多少平方米?精确到1平方米.(过 下列不能通过叶片上的气孔交换的气体是?A.氧气 B.水蒸气 C.二氧化碳 D.有机物 SB的中文含义 邻居盖房子,地基下降1--2米,且中间只留1米宽这对我家会有影响吗 谁给形象地解释一下什么是单向值传递方式地址传递方式又是什么意思呢 帮忙翻译一下 she just is your mother.这句话没有上下文,也没有语境。。。。是不是谚语或习语呢?难道就这么简单的翻译吗 侏罗纪公园基因计划琥珀怎么用,我买了琥珀,但是不知道怎么叫科研小组吧DNA提取 如何用形象地语言来解释兴奋在神经元间的传递 dont haye your mother,she just lookingourfor u ····perm什么意思dont hate your mother,she just looking our for u ····perm 所有的平行四边形、所有的三角形、所有的正方形、所有的梯形这几个一定是轴对称图形 如图,已知:AB=CD,∠A=∠D,求证:∠B=∠C梯形 第一场雪的第四自然段是按什么顺序写的如果不知道是怎么回事,第一场雪就是第十一册书(上)的 四分之三x-50%x=17.5四分之三x减百分之五十x等于十七点五 一花农计划借助两面夹角为135°的残墙围出直角梯形的花圃,围花圃总材料长45米问如何取两直角边长,可使花圃面积达到最大,最大面积为多少 有没有低氯含量氯醋树脂?氯含量在10% 无纺布的主要用途是什么?做无纺布外贸如何开发新客户? 已知:如图,AB与CD相交于点E.求证:∠A+∠C=∠B+∠D 氯醋树脂与哪些材料共同使用南无阿弥陀佛.请问:氯醋树脂,可以和哪些材料,塑料或者橡胶混溶呢?谢谢、南无地藏菩萨摩诃萨. 四分之三x减百分之五等于17.5怎么解 如何快速解决行测中的计算题 二元氯醋树脂与丙烯酸树脂的能混溶吗?将丙烯酸树脂和二元氯醋树脂同时溶解在一个溶剂里, 四分之三X除以百分之五X=17.5 寻求行测计算题解答甲、乙两人从400米的环形跑道的一点A,背向同时出发,8分钟后,两人第三次相遇.已知甲每秒钟比乙每秒钟多行0.1米,那么,两人第三次相遇的地点,与A点沿跑道上的最短距离是 请问氯醋树脂运用到哪些油漆上 y=-4x+5和y=4x+5的值域怎么求 生产队预计30天修完一条水渠,先用18个人修12天完成工程的1/3,如果要提前6天完工,还要增加多少人? 三元氯醋树脂使用哪种硅烷偶联剂 开账的意义是什么 含有雌和它的反义词的成语如题 什么人让我成长? 1-x=四分之三,17分之15-x=17分之11,11分之10-x=11分之6偶妹滴题,我跟她讲她不信, 校园要建苗圃,其形状为直角梯形,其中有两边借用夹角为135度的两面墙,另外两边是总长为30米的铁栅栏求梯形的面积y与高x的关系式求x的取值范围请写出具体算式, 屋顶可以放置小型游泳池吗小高层混凝土结构顶层,可以放置直径2.5米深75cm的小型游泳池吗,游泳池本身是塑料材质重量忽略不计,水注满时大约4.2立方. 司马迁的《史记》中,不可能记载的历史事件是( )A.少康中兴B.成康之治C.昭宣中兴D.文景之治 校园要建苗圃,其形状为直角梯形,其中有两边借用夹角为45度的两面墙,另外两边是总长为30米的铁栅栏(1)求梯形的面积Y与高X的表达式; (2)求X的取值范围 亚洲食学国际论坛登陆绍兴 中国大厨展杭州女装与国际女装相遇 传统丝绸碰撞淘宝店家支付宝“被贷款” 阿里服务热伊朗处死16名“恐怖分子”墨西哥革命制度党主席:墨中两国双边关阿富汗军事基地发生“内斗”致一死一伤贺一诚:浙商又迎新一轮挑战、改革和创阿里巴巴马云:金融业需要外行人的“搅美国“窃听门”持续发酵 欧洲各国一致2000余浙商回家共襄创业创新 新一中国科学家成功研发H7N9禽流感病毒为西湖“挑刺”成常态 文明出游初显成美国务卿克里居所遭小偷光顾 470万中国周边外交:推进大战略第九届两岸经贸文化论坛在南宁开幕国防部:日方若击落中国无人机 中方将浙江省长李强再盼“浙商回归” 希望浙老汉约网友对方是儿媳:真警察配合拍照俄印蒙三国总理同日访华 中国周边外交美国与沙特进入公开紧张状态 多重分歧儿子被男生表白妈慌了 专家:应尊重孩新版《梁祝》让破灭的美好重生阿尔及利亚让人尊敬那些有爱的人儿 让人感觉萌萌哒京东推出众筹业务闲篇儿晨报“少年军校”周六火爆开营 近40小新益又收到 16000元善款包饺子胡同填字全国公证遗嘱备案查询平台 拟7月底试回归祖国17年香港开展活动庆祝机场路广告经营权 4.09亿!增值7新电梯7月中下旬有望开装故宫暑期将提前半小时开门台北市长邀陆客赴台血拼闲置度假村有望改建养老院A股上市公司半年报披露从本月12日开万达公子吐槽京东“店大欺客”万豪酒店昨日关门 不少市民感叹舍不得“才华横溢”的德国队诺伊尔的心愿
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘