private boolean InsertRecord(Hashtable rHtbTeam){
String lStrSQL = "";
String lRS_INS = "RS_INS";
String lStrMessage = "";
boolean lBlnRtnFlag = false;
try{
lStrMessage = (String)rHtbTeam.get("message");
gDBase.dbrBeginTran();
lStrSQL = " INSERT INTO predef_msg( ";
lStrSQL += " predef_msg_id, ";
lStrSQL += " user_id, ";
lStrSQL += " msg, ";
lStrSQL += " time_stamp) ";
lStrSQL += " VALUES( ";
lStrSQL += " seq_predmsg.nextval, ";
lStrSQL += gStrUserId + ", ";
lStrSQL += " '" + lStrMessage + "', ";
lStrSQL += "sysdate) ";
gDBase.dbrExec(lStrSQL);
if (gDBase.dbrIsSucc()){
gDBase.dbrCommitTran();
lBlnRtnFlag = true;
}
else{
gDBase.dbrRollback();
}
return lBlnRtnFlag;
}
catch (Exception e){
gSysLog.WriteLog ("UploadMessage","InsertRecord","Exception",e.toString());
return lBlnRtnFlag;
}
}
在这段代码中不能存储有单引号的字符串,如:“I am a boy” 可以存储 但“I ’am a boy”或者‘I am a boy’ 就不能存储 。请问该怎么改lStrSQL += " '" + lStrMessage + "', ";
有什么办法吗? 谢谢大家!!! 详细点 再谢!!!
12 个解决方案
#1
把单引号转义\'就可以了。
#2
“I ’am a boy”=>“I \’am a boy”
#3
'" & CStr(lStrMessage) & "'
VB中字符串是这样插的,你可以试验一下,我想SQL语句中应该都一样。
VB中字符串是这样插的,你可以试验一下,我想SQL语句中应该都一样。
#4
SQL> insert into test(xx) values('I''m a boy.');
已创建 1 行。
SQL> select * from test;
XX
--------------------
I'm a boy.
你要的是这种效果吧. 如果要插入单引号,就在单引号的前面再添加一个单引号来转义。
已创建 1 行。
SQL> select * from test;
XX
--------------------
I'm a boy.
你要的是这种效果吧. 如果要插入单引号,就在单引号的前面再添加一个单引号来转义。
#5
来晚了,方法同上
#6
写一个函数,检测所有的组成sql的字符串,把其中的 ' 转换成 '' 就行了
#7
up
#8
fireredfox(火狐狸) 我的意思是现在的数据库用户插入不了带有单引号的字符串;现在是想把它改成不管有没有单引号都能插入到数据库! 谢谢大家
#9
winterxu416(伟大的虫子) 把所有sql的字符串,把其中的 ' 转换成 '' 那以后会不会双引号插入不了呢? 谢谢!!
#10
to feilongxu(飞龙):
写一个方法检查你要插入的lStrMessage,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。
写一个方法检查你要插入的lStrMessage,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。
#11
双引号不是特殊字符,没有影响.再说双引号也不是由两个单引号拼起来的。
SQL> insert into test(xx) values('"I''am a boy."');
已创建 1 行。
SQL> select * from test;
XX
--------------------
"I'am a boy."
SQL> insert into test(xx) values('"I''am a boy."');
已创建 1 行。
SQL> select * from test;
XX
--------------------
"I'am a boy."
#12
'的转义字符是'',即两个'
#1
把单引号转义\'就可以了。
#2
“I ’am a boy”=>“I \’am a boy”
#3
'" & CStr(lStrMessage) & "'
VB中字符串是这样插的,你可以试验一下,我想SQL语句中应该都一样。
VB中字符串是这样插的,你可以试验一下,我想SQL语句中应该都一样。
#4
SQL> insert into test(xx) values('I''m a boy.');
已创建 1 行。
SQL> select * from test;
XX
--------------------
I'm a boy.
你要的是这种效果吧. 如果要插入单引号,就在单引号的前面再添加一个单引号来转义。
已创建 1 行。
SQL> select * from test;
XX
--------------------
I'm a boy.
你要的是这种效果吧. 如果要插入单引号,就在单引号的前面再添加一个单引号来转义。
#5
来晚了,方法同上
#6
写一个函数,检测所有的组成sql的字符串,把其中的 ' 转换成 '' 就行了
#7
up
#8
fireredfox(火狐狸) 我的意思是现在的数据库用户插入不了带有单引号的字符串;现在是想把它改成不管有没有单引号都能插入到数据库! 谢谢大家
#9
winterxu416(伟大的虫子) 把所有sql的字符串,把其中的 ' 转换成 '' 那以后会不会双引号插入不了呢? 谢谢!!
#10
to feilongxu(飞龙):
写一个方法检查你要插入的lStrMessage,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。
写一个方法检查你要插入的lStrMessage,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。
#11
双引号不是特殊字符,没有影响.再说双引号也不是由两个单引号拼起来的。
SQL> insert into test(xx) values('"I''am a boy."');
已创建 1 行。
SQL> select * from test;
XX
--------------------
"I'am a boy."
SQL> insert into test(xx) values('"I''am a boy."');
已创建 1 行。
SQL> select * from test;
XX
--------------------
"I'am a boy."
#12
'的转义字符是'',即两个'