Guest User

Untitled

a guest
May 27th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.98 KB | None | 0 0
  1. importjava.sql.*;
  2. import org.w3c.dom.Document;
  3. import org.w3c.dom.Element;
  4. import org.w3c.dom.Node;
  5. import org.w3c.dom.NodeList;
  6. import org.xml.sax.SAXException;
  7. import javax.xml.parsers.DocumentBuilder;
  8. import javax.xml.parsers.DocumentBuilderFactory;
  9. import javax.xml.parsers.ParserConfigurationException;
  10. import javax.xml.transform.OutputKeys;
  11. import javax.xml.transform.Transformer;
  12. import javax.xml.transform.TransformerException;
  13. import javax.xml.transform.TransformerFactory;
  14. import javax.xml.transform.dom.DOMSource;
  15. import javax.xml.transform.stream.StreamResult;
  16. import javax.xml.transform.stream.StreamSource;
  17. import java.io.BufferedWriter;
  18. import java.io.IOException;
  19. import java.io.InputStream;
  20. import java.io.StringWriter;
  21. import java.nio.file.Files;
  22. import java.nio.file.Path;
  23. import java.nio.file.Paths;
  24. import java.util.Properties;
  25.  
  26.  
  27. /**
  28.  
  29. * Created by Кристина on 20.05.2018.
  30.  
  31. */
  32.  
  33. public class XmlSqlTest {
  34.  
  35.  
  36. Connection connection = null;
  37. int n;
  38. private static String 1xml = "C:\\1.xml";
  39. private static String 2xml = "C:\\2.xml";
  40. private static String 2xsl = "C:\\2.xsl";
  41.  
  42. private void connectbd(){ //создаем метод для установки соединения с sql сервером, в этом же методе транкейтим таблицу sql если там уже есть записи
  43.  
  44. String url = "jdbc:sqlserver://localhost:1433;databaseName=iatems";
  45.  
  46. String login = "sa";
  47.  
  48. String password = "7777";
  49. Statement statement = null; //
  50. try {
  51. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  52. connection = DriverManager.getConnection(url, login, password);
  53. statement = connection.createStatement();
  54. ResultSet resultSet = statement.executeQuery("SELECT FIELD FROM TEST");
  55. if (resultSet.next()) {
  56. statement.executeUpdate("TRUNCATE TABLE TEST ");
  57. } else{
  58. statement.executeUpdate("CREATE TABLE TEST (field INT)");
  59. }
  60. if(statement != null)
  61.  
  62. statement.close();
  63. }
  64.  
  65. catch (Exception e){
  66.  
  67. e.printStackTrace();
  68.  
  69. }}
  70.  
  71. public Connection getConnection() {
  72. return connection;
  73. }
  74.  
  75. public void setN(int n){ // сеттер для инициализации n, передачи значения в n
  76. this. n = n;
  77. }
  78.  
  79. public void insertSqlTable()throws SQLException { // метод для заполненя поля field таблицы sql циклом с ограничением по числу n раз заполненения строк
  80.  
  81. PreparedStatement preparedStatement = null;
  82.  
  83. preparedStatement = connection.prepareStatement(
  84.  
  85. "INSERT INTO TABLE TEST (FIELD) VALUES (?)");
  86.  
  87. for (int i = 1; i<= n;i++){
  88.  
  89. preparedStatement.setInt(1,i);
  90. }
  91.  
  92. }
  93. public String xmlOne()throws IOException { // создаем документ xml , строим теги в нужном порядке, заполняем тег field значениями из заполненного столбца FIELD sql
  94. DocumentBuilderFactory factory = DocumentBilderFactory.newInstanc();
  95. DocumentBuilder builder = factory.newDocumentBuilder();
  96. Document document = builder.newDocument();
  97. Element root = document.createElement("entries ") ;
  98. document.appeadChild(root);
  99. Statement statement = connection.createStatement();
  100. ResultSet resultSet = statement.executeQuery("SELECT FIELD FROM TEST");
  101. while(resultSet.next){
  102. //читаем элементы таблицы и записываем в нужные теги
  103. Element entry = document.createElement("entry");
  104. Element field = document.createElement("field");
  105. field.setTextContent(resultSet.getString(FIELD));
  106. root.appendChild(entry);
  107. entry.appendChild(field);
  108.  
  109. } resultSet.close();
  110. statement.close();
  111.  
  112. String formatXml1 = formatXml (document,1xml);
  113.  
  114. return formatXml1;
  115.  
  116. }
  117.  
  118. private String formatXml (Node root, String fileName) throws TransformerException { \\преобразование xml в строки с форматированием
  119. Transformer transformer = TransformerFactory.newInstance().newTransformer();
  120. transformer.setOutputProperty(OutputKeys.INDENT, "yes"); \\ добавляем пробелы
  121. DOMSource sourse = new DOMSource(root);
  122. StreamResult result= new StreamResult(new File(fileName)));
  123. transformer. Transform (sourse, result);
  124. System.out.println("1.xml создан”);
  125.  
  126. return result.toString();
  127.  
  128. }
  129.  
  130. public Path xmlTwo() throws TransformerException, IOException { \\ создание файла xml 2 на основании талицы стилей .xsl
  131. Path path1 = Paths.get(1xml);
  132. Path path2 = Paths.get(2xml);
  133. TransformerFactory factory = TransformerFactory.newInstance();
  134. Transformer transformer = factory.newTransformer(new StreamSource("2xsl"));
  135. StreamSource in = new StreamSource(path1.toFile());
  136. StreamResult out = new StreamResult(path2.toFile());
  137. transformer.transform(in, out);
  138.  
  139. System.out.println("2.xml создан на основании таблицы стилей 2xsl ”);
  140. return path2;
  141. }
  142.  
  143. public int parseXml(Path path) throws IOException, SAXException,
  144. ParserConfigurationException {
  145. long sum = 0;
  146. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  147. DocumentBuilder docBuilder = factory.newDocumentBuilder();
  148. Document doc = docBuilder.parse(path.toFile());
  149. NodeList nodeLst=doc.getElementsByTagName("entry");
  150. for(int i = 0; i < nodeLst.getLength(); i++) {
  151. String field = nodeLst.item(i).getAttributes("field");
  152. sum = sum +Integer.parseInt(field);
  153. }
  154. return sum;
  155. }
  156. }
  157.  
  158.  
  159. Class 2 Main
  160. import org.xml.sax.SAXException;
  161. import javax.xml.parsers.ParserConfigurationException;
  162. import javax.xml.transform.TransformerException;
  163. import java.io.Console;
  164. import java.io.IOException;
  165. import java.nio.file.Path;
  166. import java.sql.SQLException;
  167.  
  168. /**
  169.  
  170. * Created by Кристина on 20.05.2018.
  171.  
  172. */
  173. public class Main {
  174.  
  175. public static void main(String[] args) {
  176. long startTime = System.currentTimeMillis();
  177. XmlSqlTest xst = new XmlSqlTest;
  178. xst = null;
  179. long sum = 0;
  180. try {
  181. xst.connectbd();
  182. xst.setN(1000000);
  183. xst.insertSqlTable ();
  184. xst.xmlOne ();
  185. Path path = xst.xmlTwo();
  186. sum = xst.parseXml(path);
  187. xst.getConnection().close();
  188. } catch (IOException | SAXException | SQLException | ParserConfigurationException | TransformerException e) {
  189. e.printStackTrace();
  190. }
  191.  
  192. long timeSpent = (System.currentTimeMillis() – startTime)/1000/60;
  193.  
  194. System.out.println("сумма ="+ sum+ "программа выполнялась " + timeSpent + " мин.")
  195. }
  196. }
Add Comment
Please, Sign In to add comment