代码之家  ›  专栏  ›  技术社区  ›  LiefLayer

普及SQL Java数据库名称

  •  0
  • LiefLayer  · 技术社区  · 7 年前

    Creating Java Connector for pervasive

    这里的主要问题是它与Demodata一起工作,但是我需要在名称中使用的数据库名称是: 2018年GESCOOP号

    SQLException: [LNA][PSQL][SQL Engine][Data Record Manager]Cannot locate the named database you specified(Btrieve Error 2301)
    

    对于名称中包含“”的数据库。

    原题:

    我需要在Hibernate中使用一个普及的ODBC数据库(如果可能的话,我需要在java中使用它)。 我已经有3个文件了:jpscs.jar文件pvjdbc2.jar pvjdbc2x.jar应该是普适数据库的JDBC驱动程序,但我不知道如何用这种方言创建hibernate配置文件(我不确定hibernate是否支持普适数据库,也不确定是否可以配置自定义sql DB)。

    我刚刚能够用一个简单的服务器名(没有帐户或密码)配置一个普及的32位ODBC客户端DNS设置(在控制面板上使用windows配置数据源)。连接测试是成功的,但是我不知道如何查看这个数据库的表和数据。

    当前休眠配置文件hibernate.cfg.xml文件:

    <?xml version = "1.0" encoding = "utf-8"?>
    <!DOCTYPE hibernate-configuration SYSTEM 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
      <session-factory>
    
        <property name = "hibernate.dialect">
         org.hibernate.dialect.
        </property>
    
        <property name = "hibernate.connection.driver_class">
         com.pervasive.jdbc.v2.Driver
        </property>
    
        <!-- Assume test is the database name -->
    
        <property name = "hibernate.connection.url">
         GBJOB09.GBJOB.LOCAL/GESCOOP*2018
        </property>
    
        <!-- List of XML mapping files -->
        <!-- mapping resource = "Employee.hbm.xml"/ -->
    
     </session-factory>
    </hibernate-configuration>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   LiefLayer    7 年前

    最后,我用C来表示这个代码:

    string conn = "Provider=PervasiveOLEDB;  Data Source=gescoop°2018;Location=<url>";
    string queryString = "select * from TAB_UTENTI";
    
    try
    {
        using (OleDbConnection connection = new OleDbConnection(conn))
        {
            OleDbCommand command = new OleDbCommand(queryString, connection);
            connection.Open();
            OleDbDataReader reader = command.ExecuteReader();
    
            while (reader.Read())
            {
                Debug.WriteLine(reader.GetValue(0).ToString() + "  " +
                    reader.GetValue(1).ToString() + "  " +
                    ...
                    reader.GetValue(47).ToString() + "  ");
            }
            reader.Close();
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine("Failed to connect to data source " + ex.Message);
    }
    

    我认为jdbc驱动程序在java上有一些限制,不允许在数据库名中使用像°这样的特殊字符。 我无法更改数据库名称,因此我的唯一方法是使用C#。