{"id":890,"date":"2014-01-14T16:32:28","date_gmt":"2014-01-14T15:32:28","guid":{"rendered":"http:\/\/oprsteny.cz\/?p=890"},"modified":"2014-01-14T16:46:14","modified_gmt":"2014-01-14T15:46:14","slug":"java-build-model-from-an-instance-of-resultset","status":"publish","type":"post","link":"https:\/\/oprsteny.cz\/?p=890","title":{"rendered":"Java &#8211; Build model from an instance of ResultSet"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"897\" data-permalink=\"https:\/\/oprsteny.cz\/?attachment_id=897\" data-orig-file=\"https:\/\/oprsteny.cz\/wp-content\/uploads\/eclipse.png\" data-orig-size=\"44,42\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Java\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/oprsteny.cz\/wp-content\/uploads\/eclipse.png\" class=\"size-full wp-image-897 alignleft\" alt=\"Java\" src=\"http:\/\/oprsteny.cz\/wp-content\/uploads\/eclipse.png\" width=\"44\" height=\"42\" \/>If you want to display a JTable that displays data from a DataBase ResultSet you can do it manually using JTable that displays data converted from database table ResultSet into Object [ ][ ].<br \/>\nAnother approach is to build the JTable model dynamically using the ResultSet meta data. In this article you can see an example of how this can be achieved.<!--more--><br \/>\nThe main idea is hidden in this method which dynamically generates a model from given ResultSet<\/p>\n<pre lang=\"java\">private DefaultTableModel buildTableModel(ResultSet rs)\r\n  throws SQLException {\r\n\r\n  ResultSetMetaData metaData = rs.getMetaData();\r\n\r\n  \/\/ names of columns\r\n  Vector&lt;String&gt; columnNames = new Vector&lt;String&gt;();\r\n  int columnCount = metaData.getColumnCount();\r\n  for (int column = 1; column &lt;= columnCount; column++) {\r\n    columnNames.add(metaData.getColumnName(column));\r\n  }\r\n\r\n  \/\/ data of the table\r\n  Vector&lt;Vector&lt;Object&gt;&gt; data = new Vector&lt;Vector&lt;Object&gt;&gt;();\r\n  while (rs.next()) {\r\n    Vector&lt;Object&gt; vector = new Vector&lt;Object&gt;();\r\n    for (int columnIndex = 1; columnIndex &lt;= columnCount; columnIndex++) {\r\n      vector.add(rs.getObject(columnIndex));\r\n    }\r\n    data.add(vector);\r\n  }\r\n\r\n  return new DefaultTableModel(data, columnNames);\r\n}<\/pre>\n<p>The usage in the application might then be like in the following code<\/p>\n<pre lang=\"java\">public class Main extends JFrame {\r\n\r\n  private static final long serialVersionUID = 1L;\r\n\r\n  public static void main(String[] args) {\r\n    Connection con = null;\r\n    Statement st = null;\r\n    ResultSet rs = null;\r\n\r\n    String url = \"jdbc:mysql:\/\/example.com:3306\/eshop\";\r\n    String user = \"john_doe\";\r\n    String password = \"P@ssw0rd\";\r\n\r\n    try {\r\n      con = DriverManager.getConnection(url, user, password);\r\n      st = con.createStatement();\r\n      rs = st.executeQuery(\"select * from product_info\");\r\n\r\n      Main window = new Main();\r\n      window.setPreferredSize(new Dimension(800, 600));\r\n      window.setMinimumSize(new Dimension(400, 230));\r\n      window.setTitle(\"Database binding demo\");\r\n      window.setBounds(100, 100, 697, 524);\r\n      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n\r\n      \/\/ It creates and displays the table\r\n      JTable table = new JTable(window.buildTableModel(rs));\r\n      window.getContentPane().add(new JScrollPane(table));\r\n\r\n      window.setVisible(true);\r\n\r\n    } catch (SQLException ex) {\r\n      Logger lgr = Logger.getLogger(Version.class.getName());\r\n      lgr.log(Level.SEVERE, ex.getMessage(), ex);\r\n    } finally {\r\n      try {\r\n        if (rs != null) {\r\n          rs.close();\r\n        }\r\n\r\n        if (st != null) {\r\n          st.close();\r\n        }\r\n\r\n        if (con != null) {\r\n          con.close();\r\n        }\r\n      } catch (SQLException ex) {\r\n        Logger lgr = Logger.getLogger(Version.class.getName());\r\n        lgr.log(Level.WARNING, ex.getMessage(), ex);\r\n      }\r\n    }\r\n  }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>If you want to display a JTable that displays data from a DataBase ResultSet you can do it manually using JTable that displays data converted from database table ResultSet into Object [ ][ ]. Another approach is to build the &hellip; <a href=\"https:\/\/oprsteny.cz\/?p=890\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":897,"comment_status":"open","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":"Java - Build model from an instance of ResultSet","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[249,9,10],"tags":[70,251,66,250,252],"class_list":["post-890","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-development","category-development","category-java","tag-database","tag-defaulttablemodel","tag-mysql","tag-resultset","tag-resultsetmetadata"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/oprsteny.cz\/wp-content\/uploads\/eclipse.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3nYbe-em","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=890"}],"version-history":[{"count":8,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/890\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/890\/revisions\/899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/media\/897"}],"wp:attachment":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}