{"id":140,"date":"2016-01-25T16:48:28","date_gmt":"2016-01-25T16:48:28","guid":{"rendered":"http:\/\/kaizen-koka.com\/?p=140"},"modified":"2018-11-04T01:26:07","modified_gmt":"2018-11-04T01:26:07","slug":"jdbc","status":"publish","type":"post","link":"https:\/\/kaizen-koka.com\/?p=140","title":{"rendered":"JDBC"},"content":{"rendered":"<p>\n\t<span style=\"font-size:16px;\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Package : java.sql.*<\/strong><\/span><\/span>\n<\/p>\n<p>\n\t<span style=\"font-size:16px;\"><strong><a href=\"https:\/\/jdbc.postgresql.org\/download.html\">https:\/\/jdbc.postgresql.org\/download.html<\/a><\/strong><\/span>\n<\/p>\n<p>\n\t<span style=\"font-size:16px;\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong><a href=\"https:\/\/www.enterprisedb.com\/downloads\/postgres-postgresql-downloads\">https:\/\/www.enterprisedb.com\/downloads\/postgres-postgresql-downloads<\/a><\/strong><\/span><\/span>\n<\/p>\n<p>\n\t<strong><span style=\"font-size:16px;\"><span style=\"font-family:verdana,geneva,sans-serif;\">Steps to implement JDBC program&nbsp;<\/span><\/span><\/strong>\n<\/p>\n<p>\n\t1. Load the driver class<br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:comic sans ms,cursive;\">Class.forName(&quot;org.postgresql.Driver&quot;);<\/span><br \/>\n\t2. Establish the connection<br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:comic sans ms,cursive;\">con = DriverManager.getConnection(&quot;jdbc:postgresql:\/\/127.0.0.1:5432\/postgres&quot;, &quot;postgres&quot;, &quot;abcd12345&quot;);<\/span><br \/>\n\t3. Create a statement<br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:comic sans ms,cursive;\">Statement stmt = con.createStatement();<\/span><br \/>\n\t4. Prepare the Query and Execute it<br \/>\n\t&nbsp; &nbsp; <span style=\"font-family:comic sans ms,cursive;\">&nbsp;String sqlQuery = &quot;select username, password from register where username=&#39;abcd&#39;&quot;<br \/>\n\t&nbsp; &nbsp; &nbsp;ResultSet rs = stmt.executeQuery(sqlQuery);<\/span><br \/>\n\t5. Process the results<br \/>\n\t&nbsp; &nbsp;<span style=\"font-family:comic sans ms,cursive;\"> &nbsp;while(rs.next()){<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;user = rs.getString(&quot;username&quot;);<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;pass = rs.getString(&quot;password&quot;);<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<\/span><br \/>\n\t6. Close the statement and Connection<br \/>\n\t&nbsp;&nbsp; &nbsp; <span style=\"font-family:comic sans ms,cursive;\">stmt.close();<br \/>\n\t&nbsp;&nbsp; &nbsp; con.close();<\/span>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<strong><span style=\"font-size:16px;\">Types of Statements:<\/span><\/strong>\n<\/p>\n<p>\n\t<span style=\"font-family:verdana,geneva,sans-serif;\">&nbsp;1) <strong>Statement<\/strong><\/span><br \/>\n\t&nbsp; &nbsp; <span style=\"font-family:comic sans ms,cursive;\">Statement stmt = con.createStatement();<\/span><br \/>\n\t&nbsp; &nbsp; &nbsp;&nbsp; <span style=\"font-family:verdana,geneva,sans-serif;\">&nbsp;While creating the statement, we&#39;re not passing anyQuery params<\/span><br \/>\n\t&nbsp; &nbsp; <span style=\"font-family:comic sans ms,cursive;\">ResultSet rs = stmt.executeQuery(sqlQuery);<\/span><br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\"> sqlQuery is passed while executing execute(), executeUpdate(), executeQuery(). The following things happen everytime,<br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp; .query submission<br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp; .query complilation<br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp; .query execution&nbsp;<\/span>\n<\/p>\n<p>\n\t<strong>&nbsp;2) <span style=\"font-family:verdana,geneva,sans-serif;\">PreparedStatement<\/span><\/strong><br \/>\n\t&nbsp; &nbsp; <span style=\"font-family:comic sans ms,cursive;\">PreparedStatment ps = con.prepareStatement(sqlQuery);<\/span><br \/>\n\t<span style=\"font-family:verdana,geneva,sans-serif;\">&nbsp; &nbsp; &nbsp; &nbsp; <\/span>.query submission<br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .query compilation<br \/>\n\t&nbsp; &nbsp;<span style=\"font-family:comic sans ms,cursive;\"> ResultSet rs = ps.executeQuery();<\/span><br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\">&nbsp; <\/span>.query execution<br \/>\n\t&nbsp; &nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\">When ur creating the preparestatement by passing query as a query parameter, then query will be submitted to the sql engine 7 will be compiled. This compiled query will be stored in the database memory not in JVM memory.<\/span>\n<\/p>\n<p>\n\t&nbsp;<strong>3) CallableStatement<\/strong><br \/>\n\t&nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\"> &nbsp;Used to execute the stored procedures avaliable in database.<\/span><br \/>\n\t<span style=\"font-family:comic sans ms,cursive;\">&nbsp; &nbsp; &nbsp;String getDBProcedures = &quot;{call getDBProcedure()}&quot;;<br \/>\n\t&nbsp; &nbsp; &nbsp;callableStatement = dbConnection.prepareCall(getDBProcedures);<\/span>\n<\/p>\n<p>\n\t<br \/>\n\t<strong><span style=\"font-size:16px;\">&nbsp;Difference between execute(), executeUpdate() and executeQuery()<\/span><\/strong>\n<\/p>\n<p>\n\t&nbsp;<strong> .boolean execute()<\/strong><br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\">return true when the query is executed successfully returns false otherwise.<\/span><br \/>\n\t&nbsp; <strong>.int executeUpdate()<\/strong><br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\">returns number of rows affected with the given query<\/span><br \/>\n\t&nbsp; <strong>.ResultSet executeQuery()<\/strong><br \/>\n\t&nbsp; &nbsp; &nbsp;<span style=\"font-family:verdana,geneva,sans-serif;\">use this method, for the select stmts when u execute this, number of rows will be returned and will be stored in the resultSet objects. We can iterate the ResultSet object with the following methods.<\/span><br \/>\n\t<span style=\"font-family:comic sans ms,cursive;\">&nbsp; &nbsp; &nbsp;rs = ps.executeQuery();<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while(rs.next()){<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;user = rs.getString(&quot;username&quot;);<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;pass = rs.getString(&quot;password&quot;);<br \/>\n\t&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<\/span><br \/>\n\t&nbsp; &nbsp;<br \/>\n\t&nbsp;\n<\/p>\n<pre class=\"brush:java;\">\r\npackage com.bellinfo.advanced.jdbc;\r\n\r\nimport java.sql.*;\r\nimport java.util.Properties;\r\n\r\npublic class DepartmentRepository {\r\n\r\n    private static final String CREATE_SQL = &quot;CREATE TABLE Department ( deptid int, depname varchar, location varchar)&quot;;\r\n    private static final String INSERT_SQL = &quot;INSERT INTO Department VALUES(?,?,?)&quot;;\r\n    private static final String SELECT_SQL = &quot;select * from Department&quot;;\r\n    private static final String UPDATE_SQL = &quot;Update Department set location=? where depname=?&quot;;\r\n    private static final String VALIDATE_SQL= &quot;select exists (select 1 from pg_tables where schemaname=&#39;public&#39; and tablename=&#39;department&#39;)&quot;;\r\n\r\n    private static final String URL = &quot;jdbc:postgresql:\/\/:5432\/belljavasep&quot;;\r\n    Connection con = null;\r\n\r\n    void getConnection(){\r\n\r\n        try {\r\n            Class.forName(&quot;org.postgresql.Driver&quot;);\r\n            Properties prop = new Properties();\r\n            prop.setProperty(&quot;user&quot;,&quot;postgres&quot;);\r\n            prop.setProperty(&quot;password&quot;,&quot;&quot;);\r\n            con = DriverManager.getConnection(URL,prop);\r\n           \/\/ return con;\r\n        } catch (ClassNotFoundException e) {\r\n            e.printStackTrace();\r\n        } catch (SQLException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n\r\n    void createDepartment() throws SQLException {\r\n        getConnection();\r\n        PreparedStatement psValidate = con.prepareStatement(VALIDATE_SQL);\r\n        ResultSet rs = psValidate.executeQuery();\r\n        boolean isTableExsist = false;\r\n        while(rs.next()){\r\n            isTableExsist = rs.getBoolean(1);\r\n        }\r\n        if(isTableExsist){\r\n            System.out.println(&quot;Hey ..Table already created in your schema, so...skiping it&quot;);\r\n        }else{\r\n            PreparedStatement ps = con.prepareStatement(CREATE_SQL);\r\n            boolean isCreated = ps.execute();\r\n            System.out.println(&quot;Hey Table has been created&quot;);\r\n        }\r\n    }\r\n\r\n    void insertDepartmentRecord(Department d){\r\n        getConnection();\r\n        try {\r\n            PreparedStatement ps = con.prepareStatement(INSERT_SQL);\r\n            ps.setInt(1,d.getId());\r\n            ps.setString(2,d.getName());\r\n            ps.setString(3,d.getLoc());\r\n\r\n            ps.executeUpdate();\r\n            System.out.println(&quot;Record created&quot;);\r\n        } catch (SQLException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n    void updateDeparmentRecord(String loc, String name){\r\n        getConnection();\r\n        try {\r\n            PreparedStatement ps = con.prepareStatement(UPDATE_SQL);\r\n            ps.setString(1,loc);\r\n            ps.setString(2,name);\r\n            int count = ps.executeUpdate();\r\n            System.out.println(&quot;Records Updated count &quot;+count);\r\n        } catch (SQLException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    void fetchRecords() throws SQLException {\r\n        getConnection();\r\n        PreparedStatement ps = con.prepareStatement(SELECT_SQL);\r\n        ResultSet rs = ps.executeQuery();\r\n        while(rs.next()){\r\n            System.out.println(rs.getInt(&quot;deptid&quot;) + &quot;  &quot;+rs.getString(&quot;depname&quot;) + &quot;    &quot;+rs.getString(&quot;location&quot;) );\r\n        }\r\n    }\r\n\r\n}\r\n<\/pre>\n<p>\n\tDemo Class\n<\/p>\n<pre class=\"brush:php;\">\r\npackage com.bellinfo.advanced.jdbc;\r\n\r\nimport java.sql.SQLException;\r\nimport java.util.Scanner;\r\n\r\npublic class DepartmentDemo {\r\n\r\n    enum OPERATIONS{ INSERT, UPDATE};\r\n\r\n    public static void main(String[] args) throws SQLException {\r\n\r\n        DepartmentRepository dr = new DepartmentRepository();\r\n        dr.createDepartment();\r\n        Scanner scan = new Scanner(System.in);\r\n\r\n        System.out.println(&quot;Hey what do you want do&quot;);\r\n        String oper= scan.next();\r\n        if(oper.equalsIgnoreCase(OPERATIONS.INSERT.name())){\r\n            System.out.println(&quot;How many records&quot;);\r\n            int count = scan.nextInt();\r\n            Department d =null;\r\n            for(int i=0;i&lt;count;i++){\r\n                d = new Department();\r\n                System.out.println(&quot;id&quot;);\r\n                d.setId(scan.nextInt());\r\n                System.out.println(&quot;name&quot;);\r\n                d.setName(scan.next());\r\n                System.out.println(&quot;location&quot;);\r\n                d.setLoc(scan.next());\r\n                dr.insertDepartmentRecord(d);\r\n            }\r\n\r\n        }else if(oper.equalsIgnoreCase(OPERATIONS.UPDATE.name())){\r\n            System.out.println(&quot;which deptarment you want to update&quot;);\r\n            String dept = scan.next();\r\n            System.out.println(&quot;what is the new location&quot;);\r\n            String loc = scan.next();\r\n            dr.updateDeparmentRecord(loc,dept);\r\n\r\n        }\r\n        System.out.println(&quot;After requested operation, records in DB&quot;);\r\n        dr.fetchRecords();\r\n\r\n\r\n\r\n    }\r\n}\r\n<\/pre>\n<p>\n\tDepartment.java\n<\/p>\n<pre class=\"brush:java;\">\r\npackage com.bellinfo.advanced.jdbc;\r\n\r\nimport java.util.Objects;\r\n\r\npublic class Department {\r\n\r\n    private int id;\r\n    private String name;\r\n    private String loc;\r\n\r\n    public Department() {\r\n    }\r\n\r\n    public Department(int id, String name, String loc) {\r\n        this.id = id;\r\n        this.name = name;\r\n        this.loc = loc;\r\n    }\r\n\r\n    public int getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(int id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getLoc() {\r\n        return loc;\r\n    }\r\n\r\n    public void setLoc(String loc) {\r\n        this.loc = loc;\r\n    }\r\n\r\n    @Override\r\n    public boolean equals(Object o) {\r\n        if (this == o) return true;\r\n        if (o == null || getClass() != o.getClass()) return false;\r\n        Department that = (Department) o;\r\n        return id == that.id &amp;&amp;\r\n                Objects.equals(name, that.name) &amp;&amp;\r\n                Objects.equals(loc, that.loc);\r\n    }\r\n\r\n    @Override\r\n    public int hashCode() {\r\n\r\n        return Objects.hash(id, name, loc);\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return &quot;Department{&quot; +\r\n                &quot;id=&quot; + id +\r\n                &quot;, name=&#39;&quot; + name + &#39;\\&#39;&#39; +\r\n                &quot;, loc=&#39;&quot; + loc + &#39;\\&#39;&#39; +\r\n                &#39;}&#39;;\r\n    }\r\n}\r\n<\/pre>\n<p>\n\t&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Package : java.sql.* https:\/\/jdbc.postgresql.org\/download.html https:\/\/www.enterprisedb.com\/downloads\/postgres-postgresql-downloads Steps to implement JDBC program&nbsp; 1. Load the driver class &nbsp; &nbsp; &nbsp;Class.forName(&quot;org.postgresql.Driver&quot;); 2. Establish the connection &nbsp; &nbsp; &nbsp;con = DriverManager.getConnection(&quot;jdbc:postgresql:\/\/127.0.0.1:5432\/postgres&quot;, &quot;postgres&quot;, &quot;abcd12345&quot;); 3. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[9,2],"tags":[],"class_list":["post-140","post","type-post","status-publish","format-standard","hentry","category-advance","category-technology"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s70lnf-jdbc","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=140"}],"version-history":[{"count":5,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":560,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=\/wp\/v2\/posts\/140\/revisions\/560"}],"wp:attachment":[{"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kaizen-koka.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}