使用ibatis连接MS Sqlserver2000数据库,出现如下错误。[2009-12-22 12:07:03]INFO  com.tianyi.link.test.Test.main(Test.java:25) [main] read resource start...
Exception in thread "main" java.lang.RuntimeException: Error occurred.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: The up in the document preceding the root element must be well-formed.
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:89)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at com.tianyi.link.test.Test.main(Test.java:28)
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: The up in the document preceding the root element must be well-formed.
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:86)
... 2 more
Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: The up in the document preceding the root element must be well-formed.
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
... 3 more
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: The up in the document preceding the root element must be well-formed.
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapParser.parse(SqlMapParser.java:51)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$11.process(SqlMapConfigParser.java:410)
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)
... 7 more
Caused by: org.xml.sax.SAXParseException: The up in the document preceding the root element must be well-formed.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.ibatis.common.xml.NodeletParser.createDocument(NodeletParser.java:157)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:50)
... 10 more

检查N遍SqlMapConfig.xml文件不得结果,特贴出该文件,等待牛人的出现!<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>

<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=CMPP"/>
<property name="JDBC.Username" value="sa"/>
<property name="JDBC.Password" value="111"/>
<property name="Pool.MaximumActiveConnections" value="10"/>  
            <property name="Pool.MaximumIdleConnections" value="5" />  
            <property name="Pool.MaximumCheckoutTime" value="120000"/>  
            <property name="Pool.TimeToWait" value="500"/>  
            <property name="Pool.PingQuery" value="select 1 from CMPP"/>  
            <property name="Pool.PingEnabled" value="false"/>  
            <property name="Pool.PingConnectionsOlderThan" value="1"/>  
            <property name="Pool.PingConnectionsNotUsedFor" value="1"/>  
</dataSource>
</transactionManager>

<sqlMap resource="com/tianyi/link/dao/Login.xml" />
</sqlMapConfig>

解决方案 »

  1.   

    补充Login.xml如下:<?xml version="1.0" encoding="UTF-8"?>
    <!  DOCTYPE sqlMap 
        PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
        "http://www.ibatis.com/dtd/sql-map-2.dtd"  >
        
    <sqlMap namespace="Login">
    <typeAlias alias="login" type="com.tianyi.link.pojo.Login" />

    <select id="getLogin" parameterClass="java.lang.String" resultClass="login">
    <![CDATA[ select id, username, password from login where username=#name# ]]>
    </select>

    <select id="getAllLogin" resultClass="login">
    <![CDATA[ select id, username, password from login ]]>
    </select>

    <update id="updateLogin" parameterClass="login">
    <![CDATA[ update login set password=#password# where username=#name# ]]>
    </update>

    <insert id="insertLogin" parameterClass="login">
    INSERT INTO login(USERNAME,PASSWORD) VALUES(#name#,#password#)
    </insert>

    <delete id="deleteLogin" parameterClass="login">
    DELETE FROM login WHERE USERNAME=#name#
    </delete>
    </sqlMap>