一部分代码如下:
private RowSet runSQLGetRS(String strSQL, Connection conn, boolean bReadOnly, int nRow)
throws SQLException
{
rows.moveFirst();
rs.close();
st.close();
conn.close();
rs = null;
st = null;
conn = null;
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
goto _L1
local;
if(rs != null)
{
rs.close();
rs = null;
}
if(st != null)
{
st.close();
st = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
JVM INSTR ret 20;//这个怎么解决
_L1:
return rows;
}这个是一个另外方法里面的
private RowSet runSQLGetRS(String strSQL, Connection conn, boolean bReadOnly, int nRow)
throws SQLException
{
Statement st;
ResultSet rs;
ResultSetMetaData rsmd;
RowSet rows;
st = null;
rs = null;
rsmd = null;
rows = new RowSet();
System.out.println(strSQL);
int cols;
st = conn.createStatement();
st.setMaxRows(nRow);
rs = st.executeQuery(strSQL);
rsmd = rs.getMetaData();
cols = rsmd.getColumnCount();
if(cols == 0)
return null;
try
{
for(int i = 0; i < cols; i++)
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
rows.setColumnTypePrecisionScale(rsmd.getColumnName(i + 1), rsmd.getColumnTypeName(i + 1), 0, 0);
else
rows.setColumnTypePrecisionScale(rsmd.getColumnName(i + 1), rsmd.getColumnTypeName(i + 1), rsmd.getPrecision(i + 1), rsmd.getScale(i + 1)); Row row;
for(; rs.next(); rows.addRow(row))
{
row = new Row();
for(int i = 0; i < cols; i++)
{
Column col = new Column();
String name = rsmd.getColumnName(i + 1);
String value = null;
boolean bo = false;
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
bo = true;
else
value = rs.getString(i + 1);
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
try
{
if(bo && rs.getClob(i + 1) != null)
{
BufferedReader instream = new BufferedReader(rs.getClob(i + 1).getCharacterStream());
StringBuffer sBuffer = new StringBuffer(4096);
char buffer[] = new char[4096];
int nLength;
while((nLength = instream.read(buffer)) != -1)
sBuffer.append(buffer, 0, nLength);
value = sBuffer.toString();
instream.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
if(left(rsmd.getColumnTypeName(i + 1).toUpperCase(), 4).equals("DATE"))
if(value == null)
value = "";
else
if(mid(value, 12, 8).equals("00:00:00"))
value = replaceSubString(left(value, 10), "-", "/");
else
value = replaceSubString(left(value, 19), "-", "/");
if(value == null)
value = "";
String value11 = new String(value.getBytes("ISO8859_1"), "GBK");
col.set(trimString(value));
col.setColumnName(name);
if(!bReadOnly)
col.setOriginalValue(trimString(value));
else
col.setOriginalValue(trimString(value));
row.addColumn(col);
} } rows.moveFirst();
rs.close();
st.close();
conn.close();
rs = null;
st = null;
conn = null;
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
goto _L1
local;
if(rs != null)
{
rs.close();
rs = null;
}
if(st != null)
{
st.close();
st = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
JVM INSTR ret 20;
_L1:
return rows;
}
private RowSet runSQLGetRS(String strSQL, Connection conn, boolean bReadOnly, int nRow)
throws SQLException
{
rows.moveFirst();
rs.close();
st.close();
conn.close();
rs = null;
st = null;
conn = null;
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
goto _L1
local;
if(rs != null)
{
rs.close();
rs = null;
}
if(st != null)
{
st.close();
st = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
JVM INSTR ret 20;//这个怎么解决
_L1:
return rows;
}这个是一个另外方法里面的
private RowSet runSQLGetRS(String strSQL, Connection conn, boolean bReadOnly, int nRow)
throws SQLException
{
Statement st;
ResultSet rs;
ResultSetMetaData rsmd;
RowSet rows;
st = null;
rs = null;
rsmd = null;
rows = new RowSet();
System.out.println(strSQL);
int cols;
st = conn.createStatement();
st.setMaxRows(nRow);
rs = st.executeQuery(strSQL);
rsmd = rs.getMetaData();
cols = rsmd.getColumnCount();
if(cols == 0)
return null;
try
{
for(int i = 0; i < cols; i++)
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
rows.setColumnTypePrecisionScale(rsmd.getColumnName(i + 1), rsmd.getColumnTypeName(i + 1), 0, 0);
else
rows.setColumnTypePrecisionScale(rsmd.getColumnName(i + 1), rsmd.getColumnTypeName(i + 1), rsmd.getPrecision(i + 1), rsmd.getScale(i + 1)); Row row;
for(; rs.next(); rows.addRow(row))
{
row = new Row();
for(int i = 0; i < cols; i++)
{
Column col = new Column();
String name = rsmd.getColumnName(i + 1);
String value = null;
boolean bo = false;
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
bo = true;
else
value = rs.getString(i + 1);
if(rsmd.getColumnTypeName(i + 1).equals("CLOB"))
try
{
if(bo && rs.getClob(i + 1) != null)
{
BufferedReader instream = new BufferedReader(rs.getClob(i + 1).getCharacterStream());
StringBuffer sBuffer = new StringBuffer(4096);
char buffer[] = new char[4096];
int nLength;
while((nLength = instream.read(buffer)) != -1)
sBuffer.append(buffer, 0, nLength);
value = sBuffer.toString();
instream.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
if(left(rsmd.getColumnTypeName(i + 1).toUpperCase(), 4).equals("DATE"))
if(value == null)
value = "";
else
if(mid(value, 12, 8).equals("00:00:00"))
value = replaceSubString(left(value, 10), "-", "/");
else
value = replaceSubString(left(value, 19), "-", "/");
if(value == null)
value = "";
String value11 = new String(value.getBytes("ISO8859_1"), "GBK");
col.set(trimString(value));
col.setColumnName(name);
if(!bReadOnly)
col.setOriginalValue(trimString(value));
else
col.setOriginalValue(trimString(value));
row.addColumn(col);
} } rows.moveFirst();
rs.close();
st.close();
conn.close();
rs = null;
st = null;
conn = null;
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
goto _L1
local;
if(rs != null)
{
rs.close();
rs = null;
}
if(st != null)
{
st.close();
st = null;
}
if(conn != null)
{
conn.close();
conn = null;
}
JVM INSTR ret 20;
_L1:
return rows;
}
而是采用 C 语言直接生成的,在 Java 的底层有很多类似这样的类。