以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  C# 利用JENA将owl存入MsSQL2005报错  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=83630)


--  作者:yhb1985
--  发布时间:2/26/2010 3:44:00 PM

--  C# 利用JENA将owl存入MsSQL2005报错
我执行程序的时候报错
“com.microsoft.sqlserver.jdbc.Util”的类型初始值设定项引发异常。
大家帮我看看怎么解决这个问题。

或者有没有用C#和JENA整合的例子。
谢谢大家。

执行到红色代码的时候就会报错


using System;
using com.hp.hpl.jena.db;
using com.hp.hpl.jena.rdf.model;
//using com.hp.hpl.jena.rdql;
using com.hp.hpl.jena.query;
using System.Xml;
using System.Xml.XPath;

namespace nJena
{
 /// <summary>
 /// Summary description for JenaRDFDatabase.
 /// </summary>
 public class JenaRDFDatabase
 {
  //instance variables

  Model model;
  IDBConnection conn;

  public JenaRDFDatabase(String modelName, String dbserver, String db, String dbuser, String dbpass, bool createNew)
  {
   String M_DB_URL = "jdbc:mysql://" + db; // database URL
   String M_DB_USER = dbuser;     // database user id
   String M_DB_PASSWD = dbpass;   // database user password
   String M_DB = "MsSQL";  // database engine could also be "MySQL"

   try
   {

    // create a database connection
    // THIS LINE IS IF WE WERE USING MYSQL RATHER THAN SQL SEREVR System.Activator.CreateInstance("mysqldriver", "com.mysql.jdbc.Driver");

    M_DB_URL = "jdbc:sqlserver://" + dbserver + ";databaseName=" + db;
    System.Activator.CreateInstance("sqldriver", "com.microsoft.sqlserver.jdbc.SQLServerDriver");

    conn  = new  DBConnection(M_DB_URL, M_DB_USER, M_DB_PASSWD, M_DB);
    if (conn == null)
     Console.WriteLine("no IDBConnection");

    // create a model maker with the given connection parameters
    ModelMaker maker = ModelFactory.createModelRDBMaker(conn);

    if (createNew)
    {
     // open a previously created model
     model = maker.createModel(modelName);     
    }
    else
    {
     // open a previously created model
     model = maker.openModel(modelName);
    }
    
   }
   catch (Exception e)
   {
    throw(e);
   }
  }

  public void close()
  {
   conn.close();
  }

  public void addFile(String filepath, String format)
  {
   // Start a database transaction. Without one, each statement will be auto-committed
   // as it is added, which slows down the model import significantly.
   model.begin();

   ikvm.io.InputStreamWrapper isw = new ikvm.io.InputStreamWrapper(new System.IO.FileStream(filepath, System.IO.FileMode.Open));

   //InputStream inp = this.getClass().getClassLoader().getResourceAsStream(filename);
   model.read(isw,null,format);

   // Commit the database transaction
   model.commit();

  }

  public XmlDocument queryBySparl(String queryString)
  {
   Query query = QueryFactory.create(queryString);

   // Execute the query and obtain results
   QueryExecution qe = QueryExecutionFactory.create(query, model);
   ResultSet results = qe.execSelect();

   // Output query results 
   String op = ResultSetFormatter.asXMLString(results);

   // Important - free up resources used running the query
   qe.close();

   XmlDocument x = new XmlDocument();
   x.LoadXml(op);

   return x;
  }


 }
}


--  作者:laotao
--  发布时间:2/26/2010 6:19:00 PM

--  
刚找到代码的出处,执行的时候遇到的好像也是这个问题。在app.config里面加入下面一段之后就没问题了

    <appSettings>
        <add key="ikvm:file.encoding" value="utf8" />
    </appSettings>


[此贴子已经被作者于2010-2-26 19:13:22编辑过]

--  作者:yhb1985
--  发布时间:3/1/2010 11:08:00 AM

--  
为什么我在app.config添加上代码后又报错如下呢?能不能传给我一个可行的程序
Failure to instantiate DB Driver:MsSQL com.microsoft.sqlserver.jdbc.SQLServerException: Java 环境不支持代码页 936。
--  作者:laotao
--  发布时间:3/1/2010 2:24:00 PM

--  


注意:1. IKVM.GNU.Classpath.dll和jena.dll需要你自己添加,因为太大了没法上传
2. 代码JenaRDFDatabase db = new JenaRDFDatabase("dotnetmodel", "10.10.1.2", "LigCustom", "sa", "sa", createNew)需要按照你的数据库参数进行设置
--  作者:yhb1985
--  发布时间:3/1/2010 8:46:00 PM

--  
还是不行,运行时报错:
Failure to instantiate DB Driver:MsSQL com.microsoft.sqlserver.jdbc.SQLServerException: Java 环境不支持代码页 936

--  作者:laotao
--  发布时间:3/1/2010 9:43:00 PM

--  
可能是你的jre缺些字符集吧,我在jre1.6.0_17下运行是可以的
--  作者:yhb1985
--  发布时间:3/2/2010 11:21:00 AM

--  
是不是IKVM.GNU.Classpath.dll不同的原因?
我用的是网上下载这个程序里带的IKVM.GNU.Classpath.dll,你的是自己编译的吗?
如果是可以传给我吗?
--  作者:laotao
--  发布时间:3/2/2010 1:51:00 PM

--  
我的IKVM.GNU.Classpath.dll是0.32.0.0版,你可以到这里下载更新的:http://sourceforge.net/projects/ikvm/files/

--  作者:yhb1985
--  发布时间:3/3/2010 7:45:00 PM

--  
还是报错:
Failure to instantiate DB Driver:MsSQL com.microsoft.sqlserver.jdbc.SQLServerException: Java 环境不支持代码页 936

用什么办法可以解决呢?


--  作者:laotao
--  发布时间:3/3/2010 8:22:00 PM

--  
留个能收大邮件的信箱吧,我把整个solution发给你
--  作者:yhb1985
--  发布时间:3/3/2010 8:43:00 PM

--  
yhb1985@foxmail.com

多谢。


--  作者:yhb1985
--  发布时间:3/3/2010 9:55:00 PM

--  
我收到了你的邮件,可是执行你的代码的时候还是同样的错误:

Failure to instantiate DB Driver:MsSQL com.microsoft.sqlserver.jdbc.SQLServerException: Java 环境不支持代码页 936。


--  作者:laotao
--  发布时间:3/4/2010 2:27:00 PM

--  
试试把环境设置成下面这样
按此在新窗口浏览图片
按此在新窗口浏览图片
--  作者:yhb1985
--  发布时间:3/8/2010 10:38:00 AM

--  
请问怎样将服务器语言改成   英语(美国),也就是第二副图显示的那样?
--  作者:springbird
--  发布时间:5/27/2010 3:46:00 PM

--  
你好,可否把你的jena.dll发一份给我呢,谢谢了,我也想在c#中调用jena,不知道楼主有没有这方面的资料,谢谢
--  作者:campbell
--  发布时间:10/10/2010 3:28:00 PM

--  
请问楼主,在.net中利用jena操作本体,要如何配置呢?我看过这篇文章,http://apps.hi.baidu.com/share/detail/17948269,但不是很理解,恳求楼主能够赐教啊!先谢过了!
--  作者:winkaka_1213
--  发布时间:12/18/2012 10:40:00 AM

--  
好像在网上使用C#的资源很少,二楼所说的找到源代码不知是在何处
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
95.703ms