package tmp; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import javax.sql.DataSource; import org.fireflow.service.AbsTestContext; import org.junit.Test; import org.springframework.test.context.ContextConfiguration; @SuppressWarnings("unused") //hibernate @ContextConfiguration(locations = { "classpath:/applicationContext.xml" }) public class PreparedStatementTest extends AbsTestContext{ @Test public void testPreparedStatement()throws Exception{ // String selectSQL = "select t_ff_rt_variable.* ,t_ff_rt_process_instance.suspended from t_ff_rt_variable,t_ff_rt_process_instance " + // " where t_ff_rt_variable.scope_id=t_ff_rt_process_instance.id and scope_id=? and t_ff_rt_variable.process_id=?"; String selectSQL = "select * from t_ff_rt_workitem where id=? and (owner_id like ? or state=? )"; String updateSQL = "update t_ff_rt_workitem set owner_id=? ,owner_type=? where id=?"; String insertSQL = "insert into t_ff_rt_workitem (id,state) values (?,?)"; String deleteSQL = "delete from t_ff_rt_workitem where id=?"; String wrongSQL = "insert into t_abc(a,b,c) values(?,?,?)"; DataSource ds = (DataSource)this.applicationContext.getBean("MyDataSource"); Connection conn = ds.getConnection(); PreparedStatement selectPstmt = conn.prepareStatement(selectSQL); ParameterMetaData pmtdt = selectPstmt.getParameterMetaData(); int count = pmtdt.getParameterCount(); System.out.println("selectSQL 参数数量是 :"+count); for (int i=1;i<=count;i++){ System.out.println("第"+i+"个参数是:"+pmtdt.getParameterTypeName(1)); } ResultSetMetaData rmtdt = selectPstmt.getMetaData(); PreparedStatement updatePstmt = conn.prepareStatement(updateSQL); ParameterMetaData updatePmtdt = updatePstmt.getParameterMetaData(); count = updatePmtdt.getParameterCount(); System.out.println("selectSQL 参数数量是 :"+count); for (int i=1;i<=count;i++){ System.out.println("第"+i+"个参数是:"+updatePmtdt.getParameterTypeName(1)); } rmtdt = updatePstmt.getMetaData(); } }