以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  [求助]急!在Jena中使用MySQL出现问题。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=72138)


--  作者:christophe2008
--  发布时间:2/21/2009 4:34:00 PM

--  [求助]急!在Jena中使用MySQL出现问题。
[size=4]Jena中使用mysql出现问题
求救:
我使用的是MySQL5.0.4,JDK1.5,Eclipse3.3和Jena2.5,我尝试过使用很多MySQL驱动,有mysql-connector-java3.1系列,5.0系列,5.1系列,但调试过程中总会出现异常,不知是怎么回事?哪位大侠可以帮帮忙!
程序如下:
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.hp.hpl.jena.db.*;
import com.hp.hpl.jena.rdf.model.*;

//在MySQL数据库中创建一个模型,并存储RDF图。
public class StoreModel {
  /** MySQL driver classname */
   private static final String mysqlDriver = "com.mysql.jdbc.Driver";

   /** URL of database to use */
   private static final String DB_URL =
    "jdbc:mysql://localhost/test";
   private static final String DB_TYPE = "MySQL";                            

   /** User credentials */
   private static final String DB_USER = "root";                      
   private static final String DB_PASSWORD = "chen123";                     

   /** Name of the Jena model to create */
   private static final String MODEL_NAME = "data";

   /** Locations of wordnet graphs to load */
   private static String FileURI = "file:data/newStructure.owl";
   
   //从文件中读取RDF图进模型中
   private void readFileIntoModel(String filename, Model model)
     throws FileNotFoundException {
    //使用类装载器读取输入文件
    InputStream in = this.getClass().getClassLoader().getResourceAsStream(filename);
    
    if (in == null) {
          throw new FileNotFoundException("File not found on classpath: "+ filename);
        }
    
    model.read(in,null);
   }
   
   //创建一个MySQL模型,并读取owl本体文件
   public static void main(String[] args) {
    
    IDBConnection connection = new DBConnection(DB_URL, DB_USER, DB_PASSWORD, DB_TYPE);
    try {
        // Instantiate database driver
        Class.forName(mysqlDriver);                 
      } catch (ClassNotFoundException e) {
        System.err.println("MySQL driver class not found");
        System.exit(-1);
      }

      // Get a connection to the db
      

      // Get a ModelMaker for database-backed models
      ModelMaker maker = ModelFactory.createModelRDBMaker(connection);

      //创建一个新模型model
      Model model = maker.createModel("Onto");
      try {
            // Close the database connection
            connection.close();
          } catch (java.sql.SQLException e) {}
   }

}
出现的异常:
Exception in thread "main" java.sql.SQLException: No suitable driver
 at java.sql.DriverManager.getConnection(DriverManager.java:545)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
 at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
 at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
 at com.hp.hpl.jena.db.impl.GraphRDBMaker.hasGraph(GraphRDBMaker.java:144)
 at com.hp.hpl.jena.db.impl.GraphRDBMaker.createGraph(GraphRDBMaker.java:106)
 at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createModel(ModelMakerImpl.java:46)
 at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createModel(ModelMakerImpl.java:49)
 at Onto2Database.main(Onto2Database.java:57)
com.hp.hpl.jena.db.RDFRDBException: Failure to instantiate DB Driver:MySQL java.sql.SQLException: No suitable driver
 at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:296)
 at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
 at com.hp.hpl.jena.db.impl.GraphRDBMaker.hasGraph(GraphRDBMaker.java:144)
 at com.hp.hpl.jena.db.impl.GraphRDBMaker.createGraph(GraphRDBMaker.java:106)
 at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createModel(ModelMakerImpl.java:46)
 at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createModel(ModelMakerImpl.java:49)
 at Onto2Database.main(Onto2Database.java:57)
Caused by: java.sql.SQLException: No suitable driver
 at java.sql.DriverManager.getConnection(DriverManager.java:545)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
 at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
 ... 6 more
我尝试过很多驱动器版本还是会出现这个问题,请帮忙一下。[/size]


--  作者:Humphrey
--  发布时间:2/23/2009 12:40:00 PM

--  
是不是JDBC配置有问题啊?把JDBC所在路径添加进系统变量的路径(path)中。
同时Jena也要这样配置,否则容易出现错误。
--  作者:christophe2008
--  发布时间:2/25/2009 6:35:00 PM

--  
我试过了,配置路径之后还是不行。请问有经验的人用数据库存储时是用MySQL什么版本的和相应的驱动版本。我最近在做这个数据库存储,谢谢!
--  作者:Humphrey
--  发布时间:2/27/2009 8:41:00 AM

--  
一般情况下,MySQL5.0及以上版本(除测试版外)用JDBC3和JDBC5应该都是没有问题的,详细情况可以参考MySQL网站中有关JDBC的说明。如果您一定要分开,5.0.x可以用JDBC3;5.1.x则可以用JDBC5。这是根据JDBC和MySQL各版本发布时间确定的。
而且JDBC在使用时需要正确调用,这一点也是十分重要的。因此在确认配置正确的情况下,还请注意对JDBC的使用是否正确。
--  作者:christophe2008
--  发布时间:3/1/2009 9:50:00 PM

--  
好了,我重新安装和配置JDK之后就可以存储了,谢谢。
--  作者:Humphrey
--  发布时间:3/2/2009 8:50:00 AM

--  
同喜同喜,能正常工作就是好事。欢迎您继续提出Jena和MySQL相关的问题或与我们分享您的使用心得。能够帮到您深感荣幸,不必客气。
--  作者:Humphrey
--  发布时间:3/2/2009 8:50:00 AM

--  
同喜同喜,能正常工作就是好事。欢迎您继续提出Jena和MySQL相关的问题或与我们分享您的使用心得。能够帮到您深感荣幸,不必客气。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms