asked on
public void getConstrains() throws SQLException
{
Statement st0 = conn.createStatement();
ResultSet res0 = st0.executeQuery("SELECT CONSTRAINT_NAME "
+ "FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS "
+ "WHERE TABLE_NAME = '"+tName+"'");
while(res0.next()){
String cName = (String)res0.getObject(1);
Statement st1 = conn.createStatement();
st1.setMaxFieldSize(0x4000);
ResultSet res1 = st1.executeQuery("SELECT CHECK_CLAUSE, CONSTRAINT_SCHEMA "
+ "FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS "
+ "WHERE CONSTRAINT_NAME='"+cName+"'");
while(res1.next())
{
// java.io.InputStream ip = res1.getAsciiStream(1);
// byte[] buff = new byte[1024];
// String data = null;
// for (;;) {
// try {
// int size = ip.read(buff);
// if (size == -1)
// break;
// data = new String(buff, 0, size);
// } catch (IOException ex) {
// Logger.getLogger(ConstraintsReader.class.getName()).log(Level.SEVERE, null, ex);
// }
// }
// parse(data, (String)res1.getObject(2));
parse((String)res1.getObject(1), (String)res1.getObject(2));
}
}
}
String checkClause = res1.getString(1);
ASKER
Clob b = res1.getClob(1);
//b.getAsciiStream()getCharacterStream()
//java.io.InputStream ip = res1.getAsciiStream(1);
Reader reader = b.getCharacterStream();
StringBuilder buffer = new StringBuilder();
char[] buff0 = new char[24576];
try {
while(reader.read() > 0)
{
reader.read(buff0);
buffer.append(new String(buff0, 0, buff0.length));
}
} catch (IOException ex) {
Logger.getLogger(ConstraintsReader.class.getName()).log(Level.SEVERE, null, ex);
}
And come to the conclusion that the driver (jTDs) must be the trouble maker, because the buffer is really large enough and when run in the debugger mode I can see that it has been instantiated in the defined size. Additionally the while statement iterates just once.
ASKER
ASKER
ASKER
public void getConstrains() throws SQLException
{
Statement st0 = conn.createStatement();
ResultSet res0 = st0.executeQuery("SELECT CONSTRAINT_NAME "
+ "FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS "
+ "WHERE TABLE_NAME = '"+tName+"'");
while(res0.next()){
String cName = (String)res0.getObject(1);
Statement st1 = conn.createStatement();
st1.setMaxFieldSize(0x4000);
String sql = "SELECT CHECK_CLAUSE, CONSTRAINT_SCHEMA "
+ "FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS "
+ "WHERE CONSTRAINT_NAME='"+cName+"'";
st1.setCursorName(sql);
ResultSet res1 = st1.executeQuery(sql);
while(res1.next())
{
/*
* Try Blob and Clob
*/
Clob b = res1.getClob(1);
Reader reader = b.getCharacterStream();
StringBuilder buffer = new StringBuilder();
char[] buff0 = new char[24576];
try {
while(reader.read() > 0)
{
reader.read(buff0);
buffer.append(new String(buff0, 0, buff0.length));
}
} catch (IOException ex) {
Logger.getLogger(ConstraintsReader.class.getName()).log(Level.SEVERE, null, ex);
}
parse(buffer.toString(), res1.getString(2));
/*
* Try with ascii stream
*/
java.io.InputStream ip = res1.getAsciiStream(1);
byte[] buff1 = new byte[12288];
String data = null;
for (;;) {
try {
int size = ip.read(buff1);
if (size == -1)
break;
data = new String(buff1, 0, size);
} catch (IOException ex) {
Logger.getLogger(ConstraintsReader.class.getName()).log(Level.SEVERE, null, ex);
}
}
parse(data, res1.getString(2));
/*
* Try with object
*/
parse((String)res1.getObject(1), (String)res1.getObject(2));
/*
* Try with String
*/
parse(res1.getString(1), res1.getString(2));
}
}
}
int readCount;
while((readCount = reader.read(buff0)) > 0)
{
buffer.append(new String(buff0, 0, readCount));
}
ASKER
public void getConstraints(String tableName) throws SQLException {
PreparedStatement st = null;
ResultSet res = null;
String sql = "select" + "CC.CHECK_CLAUSE, CC.CONSTRAINT_SCHEMA" +
"from INFORMATION_SCHEMA.TABLE_CONSTRAINTS C" + "inner join" +
"INFORMATION_SCHEMA.CHECK_CONSTRAINTS CC" + "" +
"on C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME" +
"where C.TABLE_NAME = ?";
try {
st = conn.prepareStatement(sql);
st.setString(1, tableName);
res = st.executeQuery();
while (res.next()) {
parse(res.getString(1), res.getString(2));
}
} finally {
try {
res.close();
} catch (Exception e) { /* ignore */
}
try {
st.close();
} catch (Exception e) { /* ignore */
}
}
}
ASKER
ASKER
ASKER
public void getConstraints(String tableName) throws SQLException {
tName = tableName;
PreparedStatement st = null;
ResultSet res = null;
String sql = "SELECT CHECK_CLAUSE, CONSTRAINT_SCHEMA "
+ "FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS "
+ "WHERE CONSTRAINT_NAME=?";
try {
st = conn.prepareStatement(sql);
st.setString(1, tableName);
res = st.executeQuery();
while (res.next()) {
parse(res.getString(1), res.getString(2));
}
} finally {
try {
res.close();
} catch (Exception e) { /* ignore */
}
try {
st.close();
} catch (Exception e) { /* ignore */
}
}
}
while (res.next()) {
String s1 = res.getString(1);
String s2 = res.getString(2);
System.out.printf("s1 length = %d, s2 length = %d\n", s1.length(), s2.length());
parse(s1, s2);
}
java.io.StringWriter out = new java.io.StringWriter();
net.proteanit.io.IOUtils.copyReader(res.getCharacterStream(1), out);
String s1 = out.toString();
ASKER
ASKER
ASKER
Microsoft SQL Server is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.SQL Server is available in multiple versions, typically identified by release year, and versions are subdivided into editions to distinguish between product functionality. Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning.
TRUSTED BY
what is your sql server version?
check thiese articles :
http://msdn.microsoft.com/en-us/library/ms378813.aspx
http://msdn.microsoft.com/en-us/library/ms378599.aspx