今天遇见一个update语句报错,实施查出来是页面输入的字符串有问题,有一个'
英文单引号就报错,这是因为'
是sql语句中的特殊符号。
这时候就要进行特殊符号的处理
if (db.DbType == GSPDbType.Oracle)
{
sbFkbl.Append("UPDATE ROBXFK SET ROBXFK_FKZT=1,ROBXFK_ZFFS='" + Convert.ToString(dr["ROSFK_ZFFSBH"]) + "',ROBXFK_DFS='" + Convert.ToString(dr["ROSFK_DFSMC"]) + "',ROBXFK_DFCS='" + Convert.ToString(dr["ROSFK_DFCSMC"]) + "',ROBXFK_PJBH='" + Convert.ToString(dr["ROSFK_PJBH"]) + "', ");
sbFkbl.Append("ROBXFK_FKYH='" + Convert.ToString(dr["ROSFK_FKYH"]) + "',ROBXFK_FKZH='" + Convert.ToString(dr["ROSFK_FKZH"]) + "',ROBXFK_FKKM='" + Convert.ToString(dr["ROSFK_FKKM"]) + "', ");
sbFkbl.Append("ROBXFK_BZ='" + Convert.ToString(dr["ROSFK_BZ"]).Replace("'", "''") + "',ROBXFK_CN='" + psGsUserName + "', ");
sbFkbl.Append("ROBXFK_BLSJ=to_date('" + allCurDate + "','YYYY/MM/DD HH24:MI:SS') ");
sbFkbl.Append("WHERE ROBXFK_FKNM='" + Convert.ToString(dr["ROSFK_NMC"]) + "'; ");
(dr[“ROSFK_BZ”]).Replace("’", “’’”) 上面的sql语句,可以看见,将'
转译为''
在查询的时候,其他不能处理的特殊符合,如果不知道该特殊符号的ascii值,可以调用ascii函数处理,
如:select ascii(’&’) from dual;
结果:38
用Oracle的字符串处理函数chr处理。chr(38)表示 &符号
如:select chr(38) from dual;
结果:&