How to retrieve data from Postgresql index using java
-
01-11-2019 - |
Frage
I am writing an application for searching, using text search of Postgresql. I am a beginner in Database. I created a Gin index and i am trying to get data from it. My code is
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class JDBCPostgressRetrieve {
private static String Database = "jdbc:postgresql://localhost/search";
private static String user = "postgres";
private static String password = "abcd";
public static String getDatabase() {
return Database;
}
public static String getUser() {
return user;
}
public static String getPassword() {
return password;
}
public void retrieve(int limit) {
Statement stmt = null;
Connection connection = null;
ResultSet rs = null;
int i = 0;
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your PostgreSQL JDBC Driver? "
+ "Include in your library path!");
e.printStackTrace();
}
try {
connection = DriverManager.getConnection(
JDBCPostgressRetrieve.getDatabase(),
JDBCPostgressRetrieve.getUser(),
JDBCPostgressRetrieve.getPassword());
if (connection == null) {
System.out.println("Failed to make connection!");
} else {
DateFormat dateFormat = new SimpleDateFormat(
"yyyy/MM/dd HH:mm:ss");
Date date = new Date();
// Creating Statement for query execution
stmt = connection.createStatement();
// creating Query String
String query = "SELECT (person_name,email,mobile_number,key_skills,current_employer)\n" +
"FROM bhubneshwar\n" +
"WHERE textsearchable_index_col @@ to_tsquery('MBA & HR')\n" +
"LIMIT 10";
// excecuting query
rs = stmt.executeQuery(query);
while (rs.next()) {
// Didplaying data of tables
System.out.println("Name : " + rs.getString("person_name"));
System.out.println("email : " + rs.getString("email"));
System.out.println("mobile_number : " + rs.getString("mobile_number"));
System.out.println("key_skills : " + rs.getString("key_skills"));
System.out.println("current_employer : " + rs.getString("current_employer"));
}
}
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}
finally {
try {
rs.close();
stmt.close();
connection.close();
}catch(SQLException e) {
System.err.println("SQLException while closing connection. "+ e.getMessage());
}
}
}
public static void main(String args []) {
JDBCPostgressRetrieve ret = new JDBCPostgressRetrieve();
ret.retrieve(100);
}
}
textsearchable_index_col is the index column in the table. But after running the code I am getting an error.
org.postgresql.util.PSQLException: The column name person_name was not found in this ResultSet.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.findColumn(AbstractJdbc2ResultSet.java:2727)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2567)
at com.presciencesoft.postgres.search.JDBCPostgressRetrieve.retrieve(JDBCPostgressRetrieve.java:77)
at com.presciencesoft.postgres.search.JDBCPostgressRetrieve.main(JDBCPostgressRetrieve.java:103)
In this way can I retrieve from index as table ?? This query is running perfectly in command prompt.
Keine korrekte Lösung
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange