51Testing软件测试论坛

标题: SQL语句做为参数值时,单引号如何处理 [打印本页]

作者: ralphniu95    时间: 2005-4-19 14:15
标题: SQL语句做为参数值时,单引号如何处理
各位,我使用ODBC协议录制脚本,参数是查询语句,每个参数sql均不相同,且sql中包含单引号,执行脚本时Vu Generator自动替换'为'',导致sql执行出错,咸面是Vu Generator改变的sql,请问如是避免loadrunner自动替换‘为''!
select TableName from dbc.tables where DatabaseName=''Console''
作者: nettie    时间: 2005-4-19 16:51
用\'来代替
作者: ralphniu95    时间: 2005-4-20 19:49
标题: 用\试过了,还是回报错
select TableName from dbc.tables where DatabaseName=\'Console'\
Loadrunner还是报错!
作者: testing    时间: 2005-4-20 23:06
把报错的错误信息贴上来,便于分析,这是测试人员的基本习惯呀。
作者: sunshinelius    时间: 2005-4-21 16:32
你的错误不是替换引起的吧。sql语句中的字符串就是用单引号括起来的。
作者: ralphniu95    时间: 2005-4-21 18:47
标题: SQL语句做为参数值时,单引号如何处理
VuGenerator返回的错误如下:
Action.c(11): lrd_stmt: ERROR, return-code=LRDE2009.  select * from  t_unicode where f1_sb=''1''

Script:
Action()
{

        lrd_init(&InitInfo, DBTypeVersion);
        lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
        lrd_db_option(Ctx1, OT_ODBC_OV_ODBC3, 0, 0);
        lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", lr_decrypt("42678372e"), "", lr_decrypt("4267837238214a2bdd4968d63f4d05e92b5c89a60a4d7807"
        "b148d7ac575daec6e06d4ce6f5b54ca08936e9cc7a815abba11abbc8b8a2"
        "b3c54560df952ba9f776b505db7107904e2b44ce5b10"), Ctx1, 1, 0);
        lrd_open_cursor(&Csr1, Con1, 0);
        lrd_stmt(Csr1, "{NewParam}", -1, 1, 0 /*None*/, 0);
        lrd_bind_cols(Csr1, BCInfo_D3, 0);
        lrd_fetch(Csr1, 0, 1, 0, PrintRow2, 0);
        /*Note:  no rows returned by above lrd_fetch*/

        lrd_result_set(Csr1, 0, 0, 0);
        lrd_close_cursor(&Csr1, 0);
        lrd_close_connection(&Con1, 0, 0);
        lrd_close_context(&Ctx1, 0, 0);
        return 0;
}
参数:
select * from  t_unicode where f1_sb='1'
作者: sunshinelius    时间: 2005-4-21 19:53
应该是你的参数化时有问题。
你不妨将newparm替换成lr_eval_string(newparam)试试。
我没来得及试验。
作者: ralphniu95    时间: 2005-4-22 16:35
解决了,多谢:d




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2