【问题标题】:I am trying to pull data from a database and store it into a xml file. I am using a Sql query "Select * from "for pulling data我正在尝试从数据库中提取数据并将其存储到 xml 文件中。我正在使用 Sql 查询“Select * from”来提取数据
【发布时间】:2014-09-17 06:57:10
【问题描述】:

我正在做一个项目,我需要从数据库中获取数据并将其存储为 xml 格式。我正在使用以下代码从数据库中提取数据。代码如下

import java.io.StringWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class Main {

      public static void main(String args[]) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.newDocument();
        Element results = doc.createElement("Results");
        doc.appendChild(results);

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=null;
        con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "system","1234");

        ResultSet rs = con.createStatement().executeQuery("select *from people");

        ResultSetMetaData rsmd = rs.getMetaData();
        int colCount = rsmd.getColumnCount();

        while (rs.next()) {
          Element row = doc.createElement("Row");
          results.appendChild(row);
          for (int i = 1; i <= colCount; i++) {
            String columnName = rsmd.getColumnName(i);
            Object value = rs.getObject(i);
            Element node = doc.createElement(columnName);
            if (value != null)
                   node.appendChild(doc.createTextNode(value.toString()));
               else
                   node.appendChild(doc.createTextNode(""));
               row.appendChild(node);
               row.appendChild(node);

            row.appendChild(node);
          }
        }
        DOMSource domSource = new DOMSource(doc);
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
        StringWriter sw = new StringWriter();
        StreamResult sr = new StreamResult(sw);
        transformer.transform(domSource, sr);

        System.out.println(sw.toString());

        con.close();
        rs.close();
      }
    }

我将整个数据存储在 people 表中,但我需要根据 sql 查询中的 where 条件提取特定人的数据,例如“select *from people where firstname=?”。我尝试了很多方法来获取我无法获取数据的特定人的数据。请建议我如何从数据库中获取特定人的数据。以及我需要对代码进行哪些更改才能获取特定人的数据。

【问题讨论】:

    标签: java sql xml


    【解决方案1】:

    如何将名称作为参数:

    String searchedName = args[0]; 
    ResultSet rs = con.createStatement().executeQuery("select * from people where firstname = '"+searchedName+"'");
    

    【讨论】:

    • Alonana 我在运行时尝试动态输入,而不是在代码中硬编码。请帮助解决这个问题。
    【解决方案2】:

    由于您的代码在 main 方法中,您可以通过命令行将值传递为:java Main Parameter_personName。 否则,您可以从文本文件中读取它并将其作为参数传递给您的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2015-08-24
      • 1970-01-01
      相关资源
      最近更新 更多