为什么加了单引号就插入不了数据库呢?

时间:2021-11-08 21:45:53
部分代码:
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语句中应该都一样。

#4


SQL> insert into test(xx) values('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,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。

#11


双引号不是特殊字符,没有影响.再说双引号也不是由两个单引号拼起来的。
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语句中应该都一样。

#4


SQL> insert into test(xx) values('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,如果其中有一个单引号',就给它再添加一个单引号',变成''。如果没有的话,就什么也不做。

#11


双引号不是特殊字符,没有影响.再说双引号也不是由两个单引号拼起来的。
SQL> insert into test(xx) values('"I''am a boy."');

已创建 1 行。

SQL> select * from test;

XX
--------------------
"I'am a boy."

#12


'的转义字符是'',即两个'