怎么不打印未编译的sql
请把
spy.properties
配置文件
里的
deregisterdrivers=false
改为
deregisterdrivers=true
,重新运行即可。
这是因为有些应用系统中会先于
P6Spy
加载了真正的数据库的驱动程序,导致
P6Spy
无法监控到,设置
deregisterdrivers
为
true
,是显式地把真正的数据库的驱动程序进行反注册掉,而采用
P6Spy
的驱动程序。
传参的方式可以帮助防止 SQL 注入攻击,但并不能完全防止。在 C# 中,可以使用参数化查询或存储过程来防止 SQL 注入攻击。使用参数化查询可以将用户输入的数据与 SQL 查询语句分离,从而避免注入攻击。在使用参数化查询时,应该确保使用正确的参数类型,并对所有用户输入的数据进行验证和过滤。
使用存储过程可以将 SQL 代码封装在数据库中,从而避免直接向数据库发送 SQL 代码。在使用存储过程时,应该确保只给用户提供访问存储过程的权限,并对所有输入参数进行验证和过滤。
虽然使用这些方法可以减轻 SQL 注入攻击的影响,但并不能完全防止攻击,因此开发者还需要保持对潜在漏洞的警惕,并采取其他措施,如审计日志、限制数据库用户权限等。
楼主的 Java 程序, 是 B/S 的 还是 C/S 的B/S 的, 尝试在 执行 ibatis 的 插入之前 System.out 一下 那10个对象。
或者 写到 日志文件里面。
如果类 写了比较的方法的话,就比较一下 第1个 和 第2个
确定一下, 是否是 插入不同的数据。
C/S 的,设置一下 断点, 到时候,单步跟踪进去。
如果以上情况都不见效, 那么尝试使用 P6Spy
P6Spy 是一个可以用来在应用程序中拦截和修改数据 *** 作语句的开源框架.
通过P6Spy 我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。
弄hibernate时,想显示sql语句,可以设置show_sql为true来达到这个目的,但是参数值全PreparedStatement一样,用?来代替的。
用p6spy可以达到显示的那些参数原值的目的,但可读性差。可以利用SQL Profiler来处理这个事情。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)