Java 如何在变量值内的sql语句中转义单引号?
对于log4j,我有一个非常简单的sql语句:Java 如何在变量值内的sql语句中转义单引号?,java,sql,logging,log4j,escaping,Java,Sql,Logging,Log4j,Escaping,对于log4j,我有一个非常简单的sql语句: log4j.appender.DB.sql=INSERT INTO [LOG].[dbo].[LOGS] VALUES('%m') %m是一个包含记录器消息的变量。有时此消息中也会包含”。例如:用户“Admin”删除的对象C333421(粗略示例) 如何转义?使用两个单引号转义单引号。比如说 用户“管理员”删除了对象C333421 您需要更改java代码中检索消息的字符串 您可以为此使用replaceAll message=message.rep
log4j.appender.DB.sql=INSERT INTO [LOG].[dbo].[LOGS] VALUES('%m')
%m
是一个包含记录器消息的变量。有时此消息中也会包含”
。例如:用户“Admin”删除的对象C333421
(粗略示例)
如何转义?使用两个单引号转义单引号。比如说
用户“管理员”删除了对象C333421
您需要更改java代码中检索消息的字符串
您可以为此使用replaceAll
message=message.replaceAll(“,”)代码>
或者您可以在sql
语句中使用REPLACE(“%m”、“m”、“code”)
,这是log4j-我无法更改检索日志消息的模块。因此变量%m-将按原样出现。我的意思是,它将包含的字符串中可能包含”
。因此,我无法对java代码进行更改,只能对sql语句进行一些操作:(您可以尝试使用REPLACE('%m','','')
刚刚尝试过。这不起作用。下面是%m携带的行的示例:操作由用户“管理员”执行。用户URL:'app://reflection/c3333“
我看到除这些行之外的所有其他行都记录到了数据库中。我在基于并行文件的日志中看到了这些行。jboss服务器日志也抱怨sql sta失败在这些行上的陈述:(刚刚更新了答案,请尝试一下。如果它不起作用,那么我就没有想法了:)