pb中sql语句不执行

intli_FileNum,li_ret,li_countstringls_txtstringsplit_arry[]stringls_sql;li_FileNum=Fi... int li_FileNum,li_ret, li_count
string ls_txt
string split_arry[]
string ls_sql;
li_FileNum=FileOpen(pathname,LineMode!)
Do
li_ret = FileRead(li_FileNum, ls_txt)
IF li_ret >=0 THEN li_count++
split(ls_txt,'~t', split_arry[])

PREPARE SQLSA FROM 'insert into information values (split_arry[1],split_arry[2],int(split_arry[3]))';
EXECUTE SQLSA USING : split_arry[1],:split_arry[2],:split_arry[3];
commit using SQLCA;
// ls_sql='insert into information (姓名,性别,身份证号) values ('+string+'('+split_arry[1]+'),'+string+'('+split_arry[2]+'),'+int+'('+split_arry[3]+'))'
//execute immediate:ls_sql;
//update information;
sle_1.text=string(ls_sql)
mle_1.text=mle_1.text+ls_txt
LOOP UNTIL li_ret < 0
FileClose( li_FileNum )
MessageBox( '', String(li_count) )
Do
li_ret = FileRead(li_FileNum, ls_txt)
IF li_ret >=0 THEN li_count++
split(ls_txt,'~t', split_arry[])

PREPARE SQLSA FROM 'insert into information values (:split_arry[1],:split_arry[2],:split_arry[3])';
EXECUTE SQLSA USING :split_arry[1],:split_arry[2],:split_arry[3];
commit using SQLCA;
这个怎么也不执行?编译没错,数据库更新不了,连接什么的正常
展开
 我来答
百度网友c8b3acea7
2012-07-31 · TA获得超过365个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:338万
展开全部
刚刚测试了你上面的代码,请将:
PREPARE SQLSA FROM 'insert into information values (:split_arry[1],:split_arry[2],:split_arry[3])';
EXECUTE SQLSA USING :split_arry[1],:split_arry[2],:split_arry[3];

改成:

PREPARE SQLSA FROM 'insert into information values (?,?,?)';
EXECUTE SQLSA USING : split_arry[1],:split_arry[2],:split_arry[3];

在PB9下执行通过。
追问
谢了啊,可以了。我刚学pb,为什么要用values (?,?,?),“?”是什么意思,代表什么?
追答
你是带参数的动态执行SQL语句,PREPARE函数的语法是:PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};PB帮助中有详细解释,“?”表示你所带的参数,如果有五个参数,那么就是5个“?”,而不是你要插入值的变量。
Jenito
2012-07-28 · TA获得超过218个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:182万
展开全部
这里的问题:insert into information (姓名,性别,身份证号) values ('+string+'('+split_arry[1]+'),'+string+'('+split_arry[2]+'),'+int+'('+split_arry[3]+'))
应该修改一下。
insert into information (姓名,性别,身份证号) values ('+split_arry[1]+','+split_arry[2]+','+split_arry[3]+')
在第三个有一个‘号不对,'。

你要不检测一下:
PREPARE SQLSA FROM 'insert into information values ('1','2','3')';
你先用固定的变量检测一下,如果正确哪就说明问题是在这些变量,如果不对则是代码的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式