??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲黄色成人网,sese在线视频,日韩欧美精品一区二区三区经典http://www.aygfsteel.com/yuxinqianshou/category/21708.htmljava学习zh-cnThu, 19 Apr 2007 03:13:38 GMTThu, 19 Apr 2007 03:13:38 GMT60JDBC---一U用于执行SQL的Java APIhttp://www.aygfsteel.com/yuxinqianshou/articles/111432.html与心牉|与心牉|Wed, 18 Apr 2007 16:12:00 GMThttp://www.aygfsteel.com/yuxinqianshou/articles/111432.html    JDBC是一l访问数据库的API集合Q通过加蝲由数据库厂商所提供的驱动程序,可以与数据库建立q接。这P׃必ؓ讉K不同的数据库而写不同的程序了Q只需用一个JDBC API写一个程序就够了。而且是,JDBC技术对开发者屏蔽了一些细节问题,q样Q程序员׃必去兛_底层的实现技术了。另外,跟java一PJDBC Ҏ据库的访问也hq_无关性?br>    JDBC讉K数据库的步骤:

    1.注册q加载驱动程?
        驱动E序是数据厂商所提供的一个对外的接口来分辨所讉K的是哪一U数据库.
        我们可以调用Class.forName()昄地加载驱动程?Ҏ如下(以MySqlZ):
           Class.forName("org.gjt.mm.mysql.Driver");
           Class.forName()是一个静态方?用于指示Java虚拟机动态的查找,加蝲和链接指定类(如果未加蝲).如果无法扑ֈq个c?则抛出ClassNotFountException.

    2.创徏q接:
         数据库连接是使用DriverManager对象的静态方法getConnection()建立?Ҏ如下:
             String url = "jdbc:mysql://127.0.0.1:3306/qq"; //127.0.0.1接地址,qq为数据库?br>             Connection conn = DriverManager.getConnection(url, "root", "root");
             // "root", "root"为用户名和密?br>
    3.创徏SQL语句对象:
          SQL语句对象主要是用来执行SQL语句?当徏立了q接以后,便可以由Statement对象SQL语句发送到DBMS.对SELECT语句,可用executeQuery();对于创徏或修改表的语?使用executeUpdate();Ҏ如下:
              Statement st = conn.createStatement();

    4.提交SQL语句:
           得到创徏SQL语句对象?我们可以提交SQL语句?Ҏ如下:
               a.查询数据:
               ResultSet rs = st.executeQuery("select * from login"); //q回查询SQL语句所得到的ResultSet对象格式的结果集.
               b.d数据:
               int i = st.executeUpdate( "insert into login values('zhang','123')");  //q个Ҏq回值是一个整?代表的是影响数据的行?
               我们也可以用Statement的子接口PreparedStatement来实现提?而PreparedStatement的子接口CallableStatement则用于执行SQL存储q程.

     5.昄l果:
             当执行查询语句时,SQL语句的执行结果存储在ResultSet对象?我们可以使用GetxxxҎ来检索数?Ҏ如下:
                while(rs.next()){
                    String name = set.getString("name");
                    String password = set.getString("password");
                } 
              如果发送的SQL语句不是查询语句,则这一步将省略.

      6.关闭q接:
             当完成数据库操作?需要将q接关闭.因ؓ数据库连接需要消耗系l资?一旦不需要用的时?应该释攑և?q是E序员必d成的良好的习?在关闭连接时,正确的顺序是:Result,Statement,Connection.语法如下:
                rs.close();
                st.cloe();
                conn.close();
       为确保所有的q接能够被关?应该把关闭语句写在finally块中,q样,不管操作数据库过E中是否发生异常,都能够将资源释放出来.

      q接其它的数据库步骤均相?只需更改驱动E序卛_.
               
         




与心牉| 2007-04-19 00:12 发表评论
]]>
DOM和SAX的XML解析http://www.aygfsteel.com/yuxinqianshou/articles/111424.html与心牉|与心牉|Tue, 17 Apr 2007 15:33:00 GMThttp://www.aygfsteel.com/yuxinqianshou/articles/111424.html      解析xml有四U方法:DOMQSAXQDOM4jQJDOM.
     我们主要学了两种QDOM和SAX.
     DOM适于解析比较单的XML而SAX则适于解析较复杂的XML文g。各有各的好?br>
     DOM和SAX的不同:
     1. DOM是基于内存的Q不文件有多大Q都会将所有的内容预先装蝲到内存中。从而消耗很大的内存I间。而SAX是基于事件的。当某个事g被触发时Q才获取相应的XML的部分数据,从而不XML文g有多大,都只占用了少量的内存I间?br>     2. DOM可以dXML也可以向XML文g中插入数据,而SAX却只能对XMLq行dQ而不能在文g中插入数据。这也是SAX的一个缺炏V?br>     3.SAX的另一个缺点:DOM我们可以指定要访问的元素q行随机讉KQ而SAX则不行。SAX是从文档开始执行遍历的。ƈ且只能遍历一ơ。也是说我们不能随机的讉KXML文gQ只能从头到XML文g遍历一ơ(当然也可以中间截断遍历)?br>
     DOM和SAX对XML文g的解析:
     1.  在用DOM解析XMLӞ我们首先需要通过DocumentBuilderFactoryq个cdC个工厂的APIQ应用E序能够从XML文档获取 生成对象树的解析器。通过此类?newinstance() Ҏ我们可以获得此类的一个新实例。然后通过创徏DocumentBuilder的实例其从XML文档中获取DOM文档实例? DocumentBuilder的实例我们可以通过DocumentBuilderFactorycȝnewDocumentBuilder()Ҏ? 到。之后就通过DocumentBuildercȝparse(InputStream is)Ҏ给定文件的内容解析Z个XML文档Qƈ且返回一个新的DOM Document 对象。具体步骤如下:

        File file = new File("D:\\~码\\xml\\domxml.xml");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document dt = db.parse(file);
        } catch (Exception e) {
            // TODO 自动生成 catch ?br>            e.printStackTrace();
        }

q? 时我们就可以开始解析文档了。通过NodeList,Node分别可以得到节点列表和节点了。NodeList可以由Document对象? getElementsByTagName("元素名称");来得C惛_到的哪个元素的节点列表。由NodeList的item(整Ş参数)Ҏ来得? 节点。通过Node的getFirstChild().getNodeValue()Ҏ可以得到文本节点倹{方法如下:

        NodeList nl = dt.getElementsByTagName("star");//starZ个元素名U?br>        Node nd = nl.item(0);//得到节点列表 nl 的第一个节炏V?br>
此外我们可以通过循环来取得节点列表中所有的节点?br>当一个元素有子元素时我们可以通过父节点列表取得子节点列表。方法如下:

       NodeList nlF = dt.getElementsByTagName("star"); //starZ个元素名U?br>        Node ndF = nl.item(0); //得到节点列表 nl 的第一个节炏V?br>       for(int i = 0; i < nlF.getLength(); i ++)
        {
            Node ndF = nlF.item(i); //取得元素的所有节?br>            NodeList nlC = ndF.getChildNodes(); //取得子元素的节点列表
            for(int j = 0; j < nlC.getLength(); j ++)
            {
                Node ndC = nlC.item(j);
                if(ndC.getNodeType()==ndC.ELEMENT_NODE){
                    String str = ndC.getFirstChild().getNodeValue(); //取得文本节点
                    System.out.println(str); //打印出文本节?br>                    }
                }
            }
        }
/** 注意*/ ׃通过父节点列表得到子节点列表而得到的子元素节点包含了I格所占有的节点,所以这里需要用if(ndC.getNodeType()== ndC.ELEMENT_NODE)来做判断是否取得的是元素节点QndC.getNodeType()点类型,ndC.ELEMENT_NODE? 点类型ؓ元素节点Q注Q文本节Ҏ元素节点的一个子节点Q)?br>
     2. 最常用的SAX解析器是JAXP。JAXP是作为javax.xml包提供的Q包括SAX和DIM的Java接口以及Java XML解析器必L实现的基本接口和cR通过l承DefaultHandlecd现此cL法则可以遍历XML文档Q?br>
         void startDocument()
         //接收文档开始的通知
         void endDocument()
         //接收文档l束的通知
         void startElement(String uri,String localName,String qName, Attributes attributes)
         //接收元素开始的通知
         void endElement(String uri,String localName, String qName)
         //接收元素l束的通知
         void characters(char[] ch,int start, int length)
         //接收字符数据的通知

     获取SAX解析器的Ҏ和DOM怼。获取SAX解析器的Ҏ如下Q?br>         
         SAXParserFactory spf = SAXParserFactory.newInstance(); //得到工厂的一个新实例
        try {
           
            SAXParser sp = spf.newSAXParser(); //得到SAXParsercȝ实例
            File file = new File("E:\\yuxin_document\\xml\\mytest.xml"); //XML文g
            SaxHandle handle = new SaxHandle(); //SaxHandle q是一个承了DefaultHandle的实CXML遍历                                                             的一个自定义的类
            sp.parse(file, handle); //解析一个XML文档
        } catch (ParserConfigurationException e) {
            // TODO 自动生成 catch ?br>            e.printStackTrace();
        } catch (SAXException e) {
            // TODO 自动生成 catch ?br>            e.printStackTrace();
        } catch (IOException e) {
            // TODO 自动生成 catch ?br>            e.printStackTrace();
        }

    ** Z能够清晰的显C出XML中的内容Q我们还需要将解析后取得的内容昄在GUI上。一般用表格来实现?br>    
     SAX和DOM的合?br>     我们可以用SAX来解析XML再用DOM来将解析后的数据写成一个XML文g.
     使用DOM创徏一个XML文g的方法如?
    首先,需要得C个写入XML文g的Document对象:
        Document doc = DocumentHelper.createDocument();
    然后可以在q个文档中添加内容了,?
        Element root = doc.addElement("root");  //写入一个根元素"root"
        Element el = root.addElement("子元?); //在根元素中写入一个子元素

    当将所有信息写入文档后则可以将Document写入XML文g中了,Ҏ如下:

            FileWriter file = new FileWriter("D:\\doc.xml"); //得到一个文件输出流对象
        document.write(file); //文档内容写入文件中(document是上面所得到的Document
对象)
    q是一U简单的写入方式
    如果你想格式化XML文g则可以这样做:

        FileOutputStream fos = new FileOutputStream("D:\\doc.xml"); //

得到一个文件输出流对象
        OutputFormat format = OutputFormat.createPrettyPrint();  //得到OutputFormat

格式化类的对?br>        XMLWriter xw = new XMLWriter(fos,format);  //得到XML输出XMLWriter接口的一

个实?br>        xw.write(doc);  //文档写入XML
        fos.close();  //关闭输出?br>        xw.close();





与心牉| 2007-04-17 23:33 发表评论
]]>
վ֩ģ壺 â| ľ| | ǧ| ˮ| ۽| | | ȳ| пѷ| ʡ| ߴ| ׼| | ƽ| | ˮ| ʤ| | ҵ| ۶| | | ۳| ĺ| Ǧɽ| | ԭ| ն| ƽ| | | | ˺| | | | ׯ| | | |