0
votes

ALL funcions working, only adding is prob

java trowing exception:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "(" Position: 157 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:331) at ftn.webprogramiranje.projekat.topal.model.DBConnector.addProject(DBConnector.java:102) at ftn.webprogramiranje.projekat.topal.controller.project.Maintest.main(Maintest.java:43)

Here is main class:

public class Maintest {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    DBConnector dbConn = DBConnector.getInstance();
    ArrayList<Project> projects = dbConn.qSelect(null);
    for(int i=0; i<projects.size(); i++){

        System.out.println(projects.get(i).getId());
    }
    Project newProject = new Project();
    double kkk=3;
    newProject.setId(new Integer(10011));
    newProject.setName("newName");
    newProject.setOt_collection_id("newOtCollectionId");
    newProject.setDoi("newDoi");
    newProject.setAka("newAka");
    newProject.setCollection_platform("newCollectionPlatform");
    newProject.setDataset_overwiew("newDatasetOverwiew");
    newProject.setDataset_acknowledgement("newDatasetAcknowledgement");
    newProject.setKeywords("newKeywords");
    newProject.setFunder("newFunder");
    newProject.setCollector("newCollector");
    newProject.setArea(kkk);
    newProject.setPoint_density(kkk);
    newProject.setX_coordinate(kkk);
    newProject.setY_coordinate(kkk);
    newProject.setCoordinates_system("newCoordinatesSystem");
    newProject.setLink_truview("newLinkTruView");
    newProject.setSurvey_date("newSurveyDate");
    newProject.setTotal_lidar_returns("newTotalLidarReturns");
    newProject.setImage("none.jpg");
    dbConn.addProject(newProject);
}

}

and here is dbconnector class:

public class DBConnector {

private Connection c = null;
private Statement stmt = null;

private static DBConnector me = null;

public static DBConnector getInstance() {
    if (me == null)
        me = new DBConnector();

    return me;
}

private DBConnector() {
    c = null;
    try {
        Class.forName("org.postgresql.Driver");
        c = DriverManager.getConnection(
                "jdbc:postgresql://localhost:5432/postgres", "postgres",
                "pass");
        c.setAutoCommit(false);
        stmt = c.createStatement();
    } catch (Exception e) {
        e.printStackTrace();
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    System.out.println("Opened database successfully");
}

public void deleteProject(Integer id) {

    String sql = "DELETE from DIPLOMSKI_PROJEKTI where ID=" + id.toString()
            + ";";

    try {
        stmt.executeUpdate(sql);
        c.commit();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public void addProject(Project proj) {
    String sql = "INSERT INTO DIPLOMSKI_PROJEKTI (ID,NAME,OT_COLLECTION_ID,DOI,AKA,COLLECTION_PLATFORM,DATASET_OVERWIEW,DATASET_ACKNOWLEDGEMENT,KEYWORDS,FUNDER,COLLECTOR,AREA(KM2),POINT_DENSITY(PTS_PER_M2),X_COORDINATE,Y_COORDINATE,COORDINATES_SYSTEM,LINK_TRUVIEW,IMAGE,SURVEY_DATE,TOTAL_LIDAR_RETURNS(PTS)) "
            + "VALUES ("
            + proj.getId()
            + ",'"
            + proj.getName()
            + "','"
            + proj.getOt_collection_id()
            + "','"
            + proj.getDoi()
            + "','"
            + proj.getAka()
            + "','"
            + proj.getCollection_platform()
            + "','"
            + proj.getDataset_overwiew()
            + "','"
            + proj.getDataset_acknowledgement()
            + "','"
            + proj.getKeywords()
            + "','"
            + proj.getFunder()
            + "','"
            + proj.getCollector()
            + "',"
            + proj.getArea()
            + ","
            + proj.getPoint_density()
            + ","
            + proj.getX_coordinate()
            + ","
            + proj.getY_coordinate()
            + ",'"
            + proj.getCoordinates_system()
            + "','"
            + proj.getLink_truview()
            + "','"
            + proj.getImage()
            + "','"
            + proj.getSurvey_date()
            + "','"
            + proj.getTotal_lidar_returns() + "');";
    System.out.println("PUKAO1");

    try {
        System.out.println("PUKAO2");
        stmt.executeUpdate(sql);
        c.commit();
    } catch (SQLException e) {
        System.out.println("PUKAO3");
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public ArrayList<Project> qSelect(String strQuery) {
    Statement stmt = null;
    ArrayList<Project> projects = new ArrayList<Project>();

    Project project_temp = null;

    try {
        stmt = c.createStatement();

        ResultSet rs = stmt
                .executeQuery("SELECT * FROM DIPLOMSKI_PROJEKTI;");
        while (rs.next()) {
            Integer id = rs.getInt("id");
            String name = rs.getString("name");
            String ot_collection_id = rs.getString("ot_collection_id");
            String doi = rs.getString("doi");
            String aka = rs.getString("aka");
            String collection_platform = rs
                    .getString("collection_platform");
            String dataset_overwiew = rs.getString("dataset_overwiew");
            String dataset_acknowledgement = rs
                    .getString("dataset_acknowledgement");
            String keywords = rs.getString("keywords");
            String survey_date = rs.getString("survey_date");
            String funder = rs.getString("funder");
            String collector = rs.getString("collector");
            String total_lidar_returns = rs
                    .getString("total_lidar_returns(pts)");
            double point_density = rs
                    .getDouble("point_density(pts_per_m2)");
            double area = rs.getDouble("area(km2)");
            double x_coordinate = rs.getDouble("x_coordinate");
            double y_coordinate = rs.getDouble("y_coordinate");
            String coordinates_system = rs.getString("coordinates_system");
            String link_truview = rs.getString("link_truview");
            String image = rs.getString("image");

            project_temp = new Project();

            project_temp.setId(id);
            project_temp.setName(name);
            project_temp.setOt_collection_id(ot_collection_id);
            project_temp.setDoi(doi);
            project_temp.setAka(aka);
            project_temp.setCollection_platform(collection_platform);
            project_temp.setDataset_overwiew(dataset_overwiew);
            project_temp.setDataset_acknowledgement(dataset_acknowledgement);
            project_temp.setKeywords(keywords);
            project_temp.setSurvey_date(survey_date);
            project_temp.setFunder(funder);
            project_temp.setCollector(collector);
            project_temp.setCollection_platform(collection_platform);
            project_temp.setTotal_lidar_returns(total_lidar_returns);
            project_temp.setArea(area);
            project_temp.setPoint_density(point_density);
            project_temp.setX_coordinate(x_coordinate);
            project_temp.setY_coordinate(y_coordinate);
            project_temp.setCoordinates_system(coordinates_system);
            project_temp.setLink_truview(link_truview);
            project_temp.setImage(image);

            projects.add(project_temp);

        }
        rs.close();
        stmt.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return projects;
}

public boolean projectExist(Integer id) {
    DBConnector dbConn = DBConnector.getInstance();
    ArrayList<Project> projects = dbConn.qSelect(null);
    for (int i = 0; i < projects.size(); i++) {
        if (projects.get(i).getId() == id)
            return true;
    }
    return false;
}

public Project returnProject(Integer id) {
    DBConnector dbConn = DBConnector.getInstance();
    ArrayList<Project> projects = dbConn.qSelect(null);
    for (int i = 0; i < projects.size(); i++)
        if (projects.get(i).getId() == id)
            return projects.get(i);

    return null;
}

}

1
SQL Injection alert! newProject.setName(");DROP TABLE DIPLOMSKI_PROJEKTI;");MGorgon
@MGordon what are you about?j3ny4

1 Answers

0
votes

As the exception states you can not use '(' symbol in insert SQL statement as part of the column list (i.e. AREA(KM2),POINT_DENSITY(PTS_PER_M2)).