dbmet.getColumns() will it return a new resultset with default attributes?
i have an applicaiton and my problem is this,
i am creating a resultset (rs) with type_scroll_sentive and concur_updatable attributes and executing it to list the contents of a table.
then
dbmeta = conn.getMetaData();
rs = dbmeta.getColumns(" "," "," ", "%");
this rs is the same resultset which is used before. now, what i want to know is that, whether the reusultset returned by getColumns() will be a new resutlset with default attributes(like type_forward_only, etc) or the properties mentioned above will work with this rs.(resultset returned by getColumns()).......
please reply ASAP.
# 2
.....
......
....
dbmeta = conn.getMetaData();
rs = dbmeta.getColumns("", "", "", "%");
ResultSetMetaData rsMD = rs.getMetaData();
System.out.println("Fetching rows...");
rowNo = 0;
boolean ii = rs.next();
System.out.println("\n RS state: "+ii);
rs.first();
while (rs.next())
{
rowNo++;
System.out.println("");
System.out.println("Printing Row " + rowNo + " using getString(), getObject()");
for (int j=1; j <= rsMD.getColumnCount(); j++)
{
System.out.println("Column " + j + " - " + rs.getString(j) + "," + rs.getObject(j));
}
}
System.out.println("");
System.out.println("Printing ResultSetMetaData ...");
System.out.println("No. of Columns " + rsMD.getColumnCount());
for (int j = 1; j <= rsMD.getColumnCount(); j++)
{
System.out.println("Column " + j + " Data Type: " + rsMD.getColumnTypeName(j) + " Name: " + rsMD.getColumnName(j));
}
System.out.println("");
System.out.println("End of Data");
rs.close();
stmt.close();
conn.close();
}
catch(Exception e3)
{
e3.printStackTrace();
}
}
}
here.... i have user resultsetmetadata as you said with my old resultset object....... but still i am getting an exception like........
java.sql.SQLException: ResultSet type is TYPE_FORWARD_ONLY............
why is that so? i haven't included full program here.!
Thanks very much for the reply.........!
Message was edited by:
vinney_143
# 3
>dbmeta = conn.getMetaData();
>rs = dbmeta.getColumns("", "", "", "%");
>ResultSetMetaData rsMD = rs.getMetaData();
Don't use the result set with your this code:rs = dbmeta.getColumns("", "", "", "%");
Use yourCustomResultSet.getMetaData();
where yourCustomResultSet is the scrollable one (that you already have..)
# 4
import java.sql.*;
public class test
{
public static void main(String args[])
{
Connection conn=null;
Statement stmt=null,stmt1=null;
ResultSet rs=null;
DatabaseMetaData dbmeta=null;
int rowNo;
try
{
Class.forName("");
conn = DriverManager.getConnection("");
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
try
{
stmt.executeUpdate("drop table test");
System.out.println("\n Table Dropped...");
}
catch(Exception e1)
{
e1.printStackTrace();
}
stmt.executeUpdate("create table test(c1 int, c2 varchar(20), c3 double precision)");
System.out.println("\n Table Created...");
stmt.executeUpdate("insert into test values(1, 'hi', 123.45)");
stmt.executeUpdate("insert into test values(2, 'bi', 345.27)");
stmt.executeUpdate("insert into test values(3, 'fi', 678.28)");
System.out.println("\n Table Populated...");
rs = stmt.executeQuery("select * from test");
while(rs.next())
{
System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getFloat(3));
}
dbmeta = conn.getMetaData();
rs = dbmeta.getColumns("super", "super", "test", "%");
ResultSetMetaData rsMD = rs.getMetaData();
System.out.println("Fetching rows...");
rowNo = 0;
boolean ii = rs.next();
System.out.println("\n RS state: "+ii);
rs.first();
while (rs.next())
{
rowNo++;
System.out.println("");
System.out.println("Printing Row " + rowNo + " using getString(), getObject()");
for (int j=1; j <= rsMD.getColumnCount(); j++)
{
System.out.println("Column " + j + " - " + rs.getString(j) + "," + rs.getObject(j));
}
}
System.out.println("");
System.out.println("Printing ResultSetMetaData ...");
System.out.println("No. of Columns " + rsMD.getColumnCount());
for (int j = 1; j <= rsMD.getColumnCount(); j++)
{
System.out.println("Column " + j + " Data Type: " + rsMD.getColumnTypeName(j) + " Name: " + rsMD.getColumnName(j));
}
System.out.println("");
System.out.println("End of Data");
rs.close();
stmt.close();
conn.close();
}
catch(Exception e3)
{
e3.printStackTrace();
}
}
}
i have used my old resultset only........ you check out this program and as you could see, i have used what you suggested! still the exception comes from rs.first().........?
thanks in advance..............!