Advertisement
Guest User

Javaz

a guest
Sep 9th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.87 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package java2;
  7.  
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.io.OutputStream;
  11. import java.io.OutputStreamWriter;
  12. import java.sql.Connection;
  13. import java.sql.DriverManager;
  14. import java.sql.ResultSet;
  15. import java.sql.ResultSetMetaData;
  16. import java.sql.SQLException;
  17. import java.sql.Statement;
  18. import javax.xml.parsers.DocumentBuilder;
  19. import javax.xml.parsers.DocumentBuilderFactory;
  20. import javax.xml.parsers.ParserConfigurationException;
  21. import javax.xml.transform.OutputKeys;
  22. import javax.xml.transform.Result;
  23. import javax.xml.transform.Source;
  24. import javax.xml.transform.Transformer;
  25. import javax.xml.transform.TransformerConfigurationException;
  26. import javax.xml.transform.TransformerException;
  27. import javax.xml.transform.TransformerFactory;
  28. import javax.xml.transform.dom.DOMSource;
  29. import javax.xml.transform.stream.StreamResult;
  30. import org.w3c.dom.Document;
  31. import org.w3c.dom.Element;
  32.  
  33. /**
  34.  *
  35.  * @author Gregersen
  36.  */
  37. public class Opgave1 {
  38.    
  39.     static Connection conn = null;
  40.     static ResultSet rs = null;
  41.    
  42.      public static void main(String[] args) throws SQLException, ParserConfigurationException, TransformerConfigurationException, TransformerException{
  43.          
  44.          System.out.println("\nOutputting Query Results \n\n" + sqlToConsole());
  45.          
  46.          sqlToXML();
  47.      
  48.      }
  49.    
  50.     public static Connection getConnection()
  51.     {
  52.         if(conn != null) return conn;
  53.        
  54.         return getConnection("AdventureWorks2014", "sa", "Bibi1ana");
  55.        
  56.     }
  57.    
  58.     private static Connection getConnection(String dbName, String username, String password)
  59.     {
  60.         try
  61.         {
  62.             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  63.             conn = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=" + dbName + ";user=" + username + ";password=" + password + ";");
  64.         }
  65.         catch(Exception e)
  66.         {
  67.             e.printStackTrace();
  68.         }
  69.        
  70.         return conn;  
  71.     }
  72.    
  73.     private static boolean closeConnection() throws SQLException
  74.     {
  75.         try
  76.         {
  77.             if (conn != null && !conn.isClosed()) {
  78.                 conn.close();
  79.             }
  80.         }
  81.         catch(SQLException ex)
  82.         {
  83.             ex.printStackTrace();
  84.         }
  85.        
  86.         return conn.isClosed();
  87.     }
  88.    
  89.     private static ResultSet getResultSet(String sqlQuery) throws SQLException
  90.     {
  91.         conn = getConnection();
  92.         Statement stmt = null;
  93.        
  94.         if(!conn.isClosed())
  95.         {
  96.             System.out.println("Database connection open.");
  97.         }
  98.        
  99.         try
  100.         {
  101.             stmt = conn.createStatement();
  102.             rs = stmt.executeQuery(sqlQuery);
  103.         }
  104.         catch(SQLException ex)
  105.         {
  106.             System.out.println("An error occured while getting results: " + ex.getMessage());
  107.         }
  108.        
  109.         return rs;
  110.        
  111.     }
  112.    
  113.     private static void sqlToXML() throws SQLException, ParserConfigurationException, TransformerConfigurationException, TransformerException
  114.     {
  115.         try
  116.         {
  117.              Document doc = convertToXML(getResultSet("Select ProductID, Name, ProductNumber, Color FROM Production.Product WHERE Color = 'Black' ORDER BY ProductID ASC"));
  118.              
  119.              printXML(doc, System.out);
  120.              
  121.              Transformer transformer = TransformerFactory.newInstance().newTransformer();
  122.              Result output = new StreamResult(new File("XMLOutput.xml"));
  123.              Source input = new DOMSource(doc);
  124.              
  125.              transformer.transform(input, output);
  126.              
  127.              System.out.println("XML saved to file succesfully.");
  128.         }
  129.         catch(Exception e)
  130.         {
  131.             e.printStackTrace();
  132.         }
  133.         finally
  134.         {
  135.             if (closeConnection())
  136.             {
  137.                 System.out.println("Database connection closed.");
  138.             }
  139.             else
  140.             {
  141.                 System.out.println("Failed to close database connection.");
  142.             }
  143.         }
  144.        
  145.        
  146.        
  147.     }
  148.    
  149.     private static String sqlToConsole() throws SQLException
  150.     {
  151.         String output = "";
  152.          
  153.         try{
  154.             ResultSet rs =  getResultSet("SELECT BusinessEntityID, PersonType, FirstName, LastName FROM Person.Person WHERE FirstName='Michael' ORDER BY BusinessEntityID ASC");
  155.              
  156.             System.out.println("Retrieving database results.");
  157.              
  158.             if (!rs.next())
  159.             {
  160.                 return "No records found";
  161.             }
  162.             else
  163.             {
  164.                 do
  165.                 {
  166.                     int businessID = rs.getInt("BusinessEntityID");
  167.                     String personType = rs.getString("PersonType");
  168.                     String firstName = rs.getString("FirstName");
  169.                     String lastName = rs.getString("LastName");
  170.                  
  171.                     output += businessID + "\t" + personType + "\t" + firstName + " " + lastName + "\n";
  172.                 }
  173.                 while(rs.next());
  174.  
  175.             }
  176.              
  177.             rs.close();
  178.  
  179.         }
  180.         catch(Exception e)
  181.         {
  182.             return "An error occured while retrieving data: " + e.getMessage();
  183.         }
  184.         finally
  185.         {
  186.             if (closeConnection())
  187.             {
  188.                 System.out.println("Database connection closed.");
  189.                 conn = null;
  190.             }
  191.             else
  192.             {
  193.                 System.out.println("Failed to close database connection.");
  194.             }
  195.         }
  196.          
  197.         return output;
  198.     }
  199.    
  200.     public static void printXML(Document doc, OutputStream out) throws IOException, TransformerException
  201.     {
  202.         System.out.println("\nOutputting results in XML format\n");
  203.        
  204.         TransformerFactory transformerFactory = TransformerFactory.newInstance();
  205.         Transformer transformer = transformerFactory.newTransformer();
  206.         transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
  207.         transformer.setOutputProperty(OutputKeys.METHOD, "xml");
  208.         transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  209.         transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  210.         transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
  211.        
  212.         transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8")));
  213.        
  214.     }
  215.  
  216.     public static Document convertToXML(ResultSet rs) throws ParserConfigurationException, SQLException
  217.     {
  218.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  219.         DocumentBuilder builder = factory.newDocumentBuilder();
  220.         Document doc = builder.newDocument();
  221.        
  222.         Element results = doc.createElement("Results");
  223.         doc.appendChild(results);
  224.        
  225.         ResultSetMetaData rsmd = rs.getMetaData();
  226.         int columnCount = rsmd.getColumnCount();
  227.        
  228.         while(rs.next())
  229.         {
  230.             Element row = doc.createElement("Row");
  231.             results.appendChild(row);
  232.            
  233.             for(int i = 1; i <= columnCount; i++)
  234.             {
  235.                 String columnName = rsmd.getColumnName(i);
  236.                 Object value = rs.getObject(i);
  237.                
  238.                 Element node = doc.createElement(columnName);
  239.                 node.appendChild(doc.createTextNode(value.toString()));
  240.                 row.appendChild(node);
  241.             }
  242.         }
  243.        
  244.         rs.close();
  245.        
  246.         return doc;
  247.        
  248.     }
  249.  
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement