首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net C# jdbc驱动程序连接器异常

.net C# jdbc驱动程序连接器异常
EN

Stack Overflow用户
提问于 2019-02-25 19:14:56
回答 2查看 763关注 0票数 0

我正在尝试从visual studio中的c#应用程序连接到本地计算机上的hyperSQL数据库(HSQLDB)。

我已经完成了创建用于构建动态链接库的.net JDBC驱动程序的步骤,并从以下url下载了“下载”部分中的演示控制台应用程序:http://nikolaiklimov.de/query-java-HyperSQL-database-with-csharp/

演示应用程序正常工作!!我可以连接到数据库并查询其内容。接下来,我将控制台应用程序转换为类库,然后调用类库来查询DB,但这正是它失败的地方,并且我得到了System.TypeInitializationException的初始化错误。你知道为什么项目在转换成类库后会失败吗?(如果我将类库直接转换回控制台应用程序,它又可以工作了)。

代码和连接字符串为:

代码语言:javascript
复制
namespace HyperSQL
{
public static class sqlconnector
{
             readonly static string CONNECTION_STRING =   
  ConfigurationManager.ConnectionStrings["HyperSQL"].ConnectionString;
             const string SQL = "SELECT * FROM meeting";

    public static void getdata()
    {
        try
        {


        java.sql.DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
        using (java.sql.Connection conn = java.sql.DriverManager.getConnection(CONNECTION_STRING))
        {
            java.sql.PreparedStatement ps = conn.prepareStatement(SQL);
            using (java.sql.ResultSet rs = ps.executeQuery())
            {
                while (rs.next())
                {
                    Console.WriteLine($"MEETING_NO={rs.getInt("MEETING_NO")}");

                    Console.WriteLine("------------------");
                }
            }
        }
        }
        catch (Exception ex)
        {

        }

        Console.ReadLine();
    }
}
}

jdbc:hsqldb:hsql://localhost:3458/elitedb;crypt_key=DADADADADAADDADAD;crypt_type=AES;shutdown=true;write_delay=false;user=****;password=****

在转换为类库之后,我已经在我的解决方案中添加了一个控制台应用程序。控制台app代码如下:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                HyperSQL.sqlconnector.getdata();
            }
            catch (Exception ex)
            {

            }
        }
    }
}

这里有一个下载我在visual studio中创建的解决方案的链接。它包含一个调用类库中的函数的控制台应用程序。类库(HyperSQL)本身只是从控制台应用程序转换而来,并且可以转换回来。您的机器上需要有一个正在运行的HyperSQL实例才能成功连接。http://eliteservicedev.azurewebsites.net/DemoHyperSQL.zip

EN

回答 2

Stack Overflow用户

发布于 2019-02-25 20:09:55

你有没有看到你发布的原始网站中列出的错误?

如果您忘记将运行时依赖项添加到项目的build文件夹中,则会出现以下错误:无法加载文件或程序集'IKVM.OpenJDK.Util,Version=8.1.5717.0,Culture=neutral,PublicKeyToken=13235d27fcbfff58‘或其依赖项之一。系统找不到指定的文件。TypeInitializationException:'org.hsqldb.jdbc.JDBCDriver‘的类型初始值设定项引发异常: FileNotFoundException:无法加载文件或程序集'IKVM.Runtime,Version=8.1.5717.0,Culture=neutral,PublicKeyToken=13235d27fcbfff58’或其依赖项之一。‘'sun.util.locale.provider.LocaleProviderAdapter’的类型初始值设定项引发异常。‘FileNotFoundException:未能加载文件或程序集'IKVM.OpenJDK.Text,Version=8.1.5717.0,Culture=neutral,PublicKeyToken=13235d27fcbfff58‘或其依赖项之一。‘'org.hsqldb.HsqlDateTime’的类型初始值设定项引发异常。‘InvalidCastException:无法将'java.util.PropertyResourceBundle‘类型的对象强制转换为'sun.util.resources.OpenListResourceBundle’类型。

*使用源项目更新时,我看到一个错误,查看bin\debug文件夹,我发现没有将所有引用的文件复制到ConsoleApp1.exe bin文件夹:这是比较结果:

代码语言:javascript
复制
Confronto in corso dei file consoleapp1.txt e DEMOCSHARPTHYPERSQL.TXT
***** consoleapp1.txt
ConsoleApp1.exe
ConsoleApp1.exe.config
ConsoleApp1.pdb
hsqldb.dll
HyperSQL.dll
***** DEMOCSHARPTHYPERSQL.TXT
hsqldb.dll
HyperSQL.dll
*****

***** consoleapp1.txt
IKVM.OpenJDK.Jdbc.dll
IKVM.OpenJDK.Text.dll
***** DEMOCSHARPTHYPERSQL.TXT
IKVM.OpenJDK.Jdbc.dll
IKVM.OpenJDK.Localedata.dll --> Missing in ConsoleApp1.exe folder
IKVM.OpenJDK.Text.dll
*****

如果我手动复制ConsoleApp1.exe文件夹中缺少的dll,程序将正确运行。我认为这是一个visual studio的bug。

票数 0
EN

Stack Overflow用户

发布于 2019-11-08 16:29:01

VS似乎没有将所有IKVM all复制到输出文件夹,因为不需要解析它们。请看这个SourceForge issue和这个GitHub issue,后面的那个有我的评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54864967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档