Witam jestem poczatkujacy, napisalem prosty program do komunikacji z baza danych (postgres) i mam problem z funkcja - ResultSetMetaData.getColumnName() bo nie wiem dlaczego zamiast zwocic tablice Stringow wywala wyjatek java.lang.NullPointerException
Kod:
Baza skalada sie z jednej tabeli :
i wypelniana jest wartosciami:
Jezeli ktos wie dlaczego tak sie dziaje to prosze o pomoc .
Kod:
import java.sql.*;
public class ColumnName {
Connection connection;
Statement statement;
DatabaseMetaData dbmd;
String[] columnNames;
public ColumnName()
throws ClassNotFoundException, SQLException{
String database = ".";
String username = ".";
String password = ".";
Class.forName("org.postgresql.Driver"); //load the driver
connection = DriverManager.getConnection("jdbc:postgresql:"+database,
username,
password); //connect to the db
dbmd = connection.getMetaData(); //get MetaData to confirm connection
System.out.println("Connected to "+dbmd.getDatabaseProductName()+" "+
dbmd.getDatabaseProductVersion()+" successful.\n");
statement = connection.createStatement(); //create a statement that we can use later
int columnCount;
String query = "select * from products";
ResultSet rs = statement.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
columnCount=rsmd.getColumnCount();
System.out.println("Liczba kolumn "+columnCount);
for(int i=1; i<columnCount+1;i++){
if(rsmd.getColumnName(i)!=null){
System.out.println(i);
columnNames[i-1]=rsmd.getColumnName(i);
}
else System.out.println("null");
}
System.out.println("---------------------");
System.out.println(columnNames);
System.out.println("---------------------");
rs.close();
}
public static void main (String args[]) {
try{
ColumnName columnName = new ColumnName();
}catch (Exception ex){
System.out.println("***Exception:\n"+ex);
ex.printStackTrace();
}
}
}
Baza skalada sie z jednej tabeli :
create table products (
id integer primary key,
names varchar(32),
price decimal(10,2),
quan integer
);
i wypelniana jest wartosciami:
delete from products;
insert into products values(1, 'Kabel UTP 5', 1.00, 3);
insert into products values(2, 'Karta Siecieowa 10/100 M', 15.00, 4);
insert into products values(3, 'Router Edimax 6104K', 105.00, 6);
insert into products values(4, 'ASUS CD-S520', 55.00, 1);
insert into products values(5, 'LG GCR-8525 52xSpeed OEM', 55.00, 6);
insert into products values(6, 'Athlon 64 3000 Socket 939', 369.00,7);
Jezeli ktos wie dlaczego tak sie dziaje to prosze o pomoc .