这个要借助工具了
p6spy
P6SPY的安装和使用 收藏
P6spy是今天额外的工作,结果花去我大半的时间,实在是令我心痛。。。
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。
p6spy的安装步骤:
1. 下载p6spy的安装包
2. 把p6spy的jar包放到Classpath中,如果是WEB App放在WEB APP/WEB-INF/lib目录下
3. 把p6spy的Driver Class name替换原来的JDBC Driver Class Name, url, username, password一切都不变。
-- 由于每个应用的数据库连接配置,可能不一样,有些是Hibernate, OJB, Spring或者其它。。。。请按照相应的配置文件修改即可。
-- dbcp还要再试试,才知道是否支持,理论是支持的。
4. 编辑spy.properties文件,把JDBC Driver Class Name作为RealDriverName的值,其它的属性一般不用指定.
5. 把spy.properties放到合适的目录下,一定要让App能够找着,如果是webapp就放在webapp/WEB-INF/classess/目录下。
6. 启动应用,看看spy.log是否生成出来了?
转自
http://blog.csdn.net/onlyme/archive/2005/07/05/414673.aspx
分享到:
相关推荐
在设置了参数之后,就可以使用executeUpdate方法来执行包含参数的实际SQL语句。如果SQL语句是更新类型的操作,如UPDATE或DELETE,executeUpdate将返回一个表示受影响行数的整数值。 ```java int rowCount = pstmt....
对于IN参数,你可以使用PreparedStatement的setXXX方法将值设置到占位符上,如setFloat、setInt等。例如,为上述存储过程设置参数值: ```java cstmt.setFloat(1, someValue1); cstmt.setString(2, someValue2); ``...
- 使用`Statement.RETURN_GENERATED_KEYS`参数来创建`PreparedStatement`对象。 - 通过调用`getGeneratedKeys()`方法来获取插入操作产生的自增ID。 ##### 2.3 Hibernate方法 如果使用Hibernate框架,则可以利用其...
在执行CallableStatement对象(通过调用execute()或executeQuery()方法)之后,可以使用getXXX()方法获取OUT参数的值。这些方法与setXXX()方法相对应,将JDBC类型转换为Java类型,如getByte(), getBigDecimal(), ...
- **查询**:创建一个PreparedStatement对象,使用`prepareStatement()`方法,然后调用`setXXX()`方法设置参数,最后执行`executeQuery()`获取结果集。 ```java String sql = "SELECT * FROM score WHERE number = ?...
4. 执行 SQL 处理结果集,执行 SQL 前如果有参数值就设置参数值 setXXX() 5. 关闭结果集、关闭会话、关闭连接 二、PreparedStatement 的使用 1. PreparedStatement 接口继承 Statement,PreparedStatement 实例...
Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法...
它提供了遍历数据的方法,如`next()`,以及获取列值的方法,如`getString()`、`getInt()`等。 JDBC的使用通常涉及以下六个步骤: 1. 导入必要的驱动库。 2. 注册数据库驱动,例如通过`DriverManager.register...
)`,然后设置参数值。 5. **数据的删除**: 删除操作类似,创建一个`PreparedStatement`,设置相应的删除条件,如`DELETE FROM table_name WHERE id = ?`,然后执行`executeUpdate()`。 6. **数据的修改**: ...
**解析**: 如果设置了此参数为true,一旦c3p0尝试获取连接失败,就会宣告数据源断开,并永久关闭数据源。这种设置适用于那些对数据库连接有较高稳定性和安全性要求的应用场景。 #### checkoutTimeout **含义**: 当...
总结来说,Statement适用于简单的、不涉及动态参数的SQL操作,而PreparedStatement更适合复杂和需要动态参数的情况,同时提供了更好的安全性与性能。在实际开发中,为了应用的安全性和效率,推荐使用...
- `setBoolean(int parameterIndex, boolean x)`:设置参数值为布尔值。 - `setByte(int parameterIndex, byte x)`:设置参数值为字节。 - `setInt(int parameterIndex, int x)`:设置参数值为整数。 5. **...
之后,我们可以调用`getXXX`方法(根据参数类型选择,如`getInt`、`getString`等)来获取输出参数的值。 4. 使用带有返回状态的存储过程 某些存储过程会返回一个状态值,表示执行的结果。在Java中,我们可以通过`...
在Java中,我们首先编写UPDATE语句,设置条件和要更新的字段值,通过PreparedStatement对象执行更新,并确保操作完成后关闭连接。 4. **查**(Select):"查"即查询数据,最常用的是SELECT语句。在Java中,我们可以...
- `setXxx(int paramIndex, Xxx value)`:用于设置 SQL 语句中的参数值。 - **ResultSet**:表示查询结果的集合。提供了一系列方法用于遍历和检索结果集中的数据: - `next()`:将指针移动到结果集的下一行。 - `...
此外,通过 `setXxx()` 方法设置参数的值,可以有效地防止 SQL 注入攻击。 #### 四、处理返回结果 对于查询操作,结果通常是一个 `ResultSet` 对象,可以通过循环遍历每一行数据,并从中提取所需的信息。例如: ```...
之后,通过setString等方法将参数传递给PreparedStatement对象。在查询执行时,传入的参数值被自动以参数化的方式处理,避免了SQL注入的风险。即使传入的参数中包含有SQL注入攻击代码,这部分代码也不会被当作SQL...
使用PreparedStatement对象可以有效地防止SQL注入攻击,因为它允许在SQL语句中使用占位符来设置参数。 查询结果的处理通过ResultSet对象进行,该对象封装了SQL查询语句的执行结果。通过调用PreparedStatement对象的...
`PreparedStatement`可以预编译SQL语句,然后设置参数值。在删除和修改操作中,通常需要根据特定条件(如ID)来定位记录。查询操作则可能涉及`ResultSet`对象,用于遍历查询结果。 在实际开发中,为了遵循最佳实践...
找到最大值之后+1赋给要持久化的对象 2.assigned:指派 hibernate不在自动生成主键值,需要你在插入时自己指明 3.hilo:高低值算法,由数据库表提供高值,程序提供低值 value = hi*(max_lo+1)+lo 4.sequences Cat...