以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  【求助】用jena将本体导入MySQL:Duplicate entry '0' for key 1  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=74017)


--  作者:yangzi326
--  发布时间:4/8/2009 7:47:00 PM

--  【求助】用jena将本体导入MySQL:Duplicate entry '0' for key 1
总是出现这个问题,并没有对一个表的主键列输入两次为‘0’的值。查了一下,很多人说是因为主键设了自动增长类型,可是去掉了自动增长还是这样。

各位大牛帮忙看看还有什么可能的原因呢?

代码如下:

package jsp;

import java.io.*;
import java.sql.SQLException;
import com.hp.hpl.jena.db.*;
import com.hp.hpl.jena.rdf.model.*;

public class OntoDatabase {

 public static final String strDriver = "com.mysql.jdbc.Driver"; // path of driver class
 public static final String strURL = "jdbc:mysql://localhost:3306/ontodb"; // URL of database
 public static final String strUser = "root"; // database user id
 public static final String strPassWord = "12345"; // database password
 public static final String strDB = "MySQL"; // database type
 
 public static void main(String[] args){
  try{
   // 创建一个数据库连接
   IDBConnection conn = new DBConnection ( strURL, strUser, strPassWord, strDB );
   // 加载数据库驱动类,需要处理异常
   try{
    Class.forName(strDriver);
   }catch(ClassNotFoundException e) {
    System.out.println("ClassNotFoundException, Driver is not available...");
   }
   
   // 使用数据库连接参数创建一个模型制造器
   ModelMaker maker = ModelFactory.createModelRDBMaker(conn);
   
   // 创建一个默认模型,命名为 MyOntology
   Model defModel = maker.createModel("MyOntology");
   
   // 准备需要存入数据库的本体文件,建立输入文件流
   FileInputStream inputSreamfile = null;
   try {
    File file = new File("E:\\workspace\\Web_Onto\\ontology\\Video_Onto.owl");
    inputSreamfile = new FileInputStream(file);
   } catch (FileNotFoundException e) {
    e.printStackTrace();
    System.out.println("Ontology File is not available...");
   }
   
   InputStreamReader in = null;
   try {
    in = new InputStreamReader(inputSreamfile, "UTF-8");
   } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
   }
   
   // 读取文件
   defModel.read(in,null);
   
   // 关闭输入流读取器
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
   
   // 执行数据转换,将本体数据存入数据库
   defModel.commit();
   
   // 关闭数据库连接
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }catch(RDFRDBException e){
   System.out.println("Exceptions occur...");
  }
 }
} // 代码结束
   


--  作者:jpz6311whu
--  发布时间:4/9/2009 11:13:00 AM

--  
楼主MySQL啥版本?
--  作者:yangzi326
--  发布时间:4/9/2009 11:16:00 AM

--  
5.0的
--  作者:jpz6311whu
--  发布时间:4/10/2009 4:15:00 PM

--  
看看这里版本是否对应起来了,也就是jena的版本和jdbc的版本以及mysql的版本要合适才行:

http://jena.sourceforge.net/DB/index.html


--  作者:yangzi326
--  发布时间:4/10/2009 7:14:00 PM

--  
恩!已经解决了,正是这个问题!
谢谢!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms