You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2008/10/05 22:06:20 UTC
svn commit: r701878 -
/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
Author: sebb
Date: Sun Oct 5 13:06:20 2008
New Revision: 701878
URL: http://svn.apache.org/viewvc?rev=701878&view=rev
Log:
Ensure same encoding used for all conversions
Ensure statements are closed
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
Modified: jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java?rev=701878&r1=701877&r2=701878&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java (original)
+++ jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java Sun Oct 5 13:06:20 2008
@@ -18,6 +18,7 @@
package org.apache.jmeter.protocol.jdbc.sampler;
+import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.sql.CallableStatement;
import java.sql.Connection;
@@ -139,7 +140,9 @@
res.setSamplerData(toString());
res.setDataType(SampleResult.TEXT);
// Bug 31184 - make sure encoding is specified
- res.setDataEncoding(System.getProperty("file.encoding")); // $NON-NLS-1$
+ // TODO - should the encoding be configurable?
+ final String encoding = System.getProperty("file.encoding"); // $NON-NLS-1$
+ res.setDataEncoding(encoding);
// Assume we will be successful
res.setSuccessful(true);
@@ -150,6 +153,8 @@
res.sampleStart();
Connection conn = null;
Statement stmt = null;
+ CallableStatement cstmt = null;
+ PreparedStatement pstmt = null;
try {
@@ -168,48 +173,48 @@
try {
rs = stmt.executeQuery(getQuery());
Data data = getDataFromResultSet(rs);
- res.setResponseData(data.toString().getBytes());
+ res.setResponseData(data.toString().getBytes(encoding));
} finally {
close(rs);
}
} else if (CALLABLE.equals(_queryType)) {
- CallableStatement cstmt = getCallableStatement(conn);
+ cstmt = getCallableStatement(conn);
int out[]=setArguments(cstmt);
// A CallableStatement can return more than 1 ResultSets
// plus a number of update counts.
boolean hasResultSet = cstmt.execute();
String sb = resultSetsToString(cstmt,hasResultSet, out);
- res.setResponseData(sb.getBytes());
+ res.setResponseData(sb.getBytes(encoding));
} else if (UPDATE.equals(_queryType)) {
stmt = conn.createStatement();
stmt.executeUpdate(getQuery());
int updateCount = stmt.getUpdateCount();
String results = updateCount + " updates";
- res.setResponseData(results.getBytes());
+ res.setResponseData(results.getBytes(encoding));
} else if (PREPARED_SELECT.equals(_queryType)) {
- PreparedStatement pstmt = getPreparedStatement(conn);
+ pstmt = getPreparedStatement(conn);
setArguments(pstmt);
pstmt.executeQuery();
String sb = resultSetsToString(pstmt,true,null);
- res.setResponseData(sb.getBytes());
+ res.setResponseData(sb.getBytes(encoding));
} else if (PREPARED_UPDATE.equals(_queryType)) {
- PreparedStatement pstmt = getPreparedStatement(conn);
+ pstmt = getPreparedStatement(conn);
setArguments(pstmt);
pstmt.executeUpdate();
String sb = resultSetsToString(pstmt,false,null);
- res.setResponseData(sb.getBytes());
+ res.setResponseData(sb.getBytes(encoding));
} else if (ROLLBACK.equals(_queryType)){
conn.rollback();
- res.setResponseData(ROLLBACK.getBytes());
+ res.setResponseData(ROLLBACK.getBytes(encoding));
} else if (COMMIT.equals(_queryType)){
conn.commit();
- res.setResponseData(COMMIT.getBytes());
+ res.setResponseData(COMMIT.getBytes(encoding));
} else if (AUTOCOMMIT_FALSE.equals(_queryType)){
conn.setAutoCommit(false);
- res.setResponseData(AUTOCOMMIT_FALSE.getBytes());
+ res.setResponseData(AUTOCOMMIT_FALSE.getBytes(encoding));
} else if (AUTOCOMMIT_TRUE.equals(_queryType)){
conn.setAutoCommit(true);
- res.setResponseData(AUTOCOMMIT_TRUE.getBytes());
+ res.setResponseData(AUTOCOMMIT_TRUE.getBytes(encoding));
} else { // User provided incorrect query type
String results="Unexpected query type: "+_queryType;
res.setResponseMessage(results);
@@ -221,9 +226,15 @@
res.setResponseMessage(ex.toString());
res.setResponseCode(ex.getSQLState()+ " " +errCode);
res.setSuccessful(false);
+ } catch (UnsupportedEncodingException ex) {
+ res.setResponseMessage(ex.toString());
+ res.setResponseCode("000"); // TODO - is this correct?
+ res.setSuccessful(false);
} finally {
close(stmt);
close(conn);
+ close(pstmt);
+ close(cstmt);
}
// TODO: process warnings? Set Code and Message to success?
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org