Я пытаюсь подключиться к базе данных HyperSQL (HSQLDB) на моей локальной машине из приложения ac # в visual studio.
Я выполнил шаги по созданию драйвера JDBC .net для сборки dll, а также загрузил приложение демо-консоли в разделе «загрузка» со следующего URL: http://nikolaiklimov.de/query-java-HyperSQL-database-with-csharp/
Демо приложение работает !!я могу подключиться к базе данных и запросить ее содержимое.Затем я преобразовал консольное приложение в библиотеку классов, затем вызвал библиотеку классов для запроса к БД, но это то место, где оно падает, и я получаю ошибки инициализации System.TypeInitializationException.любая идея, почему проект падает после преобразования в библиотеку классов.(если я преобразую библиотеку классов прямо обратно в консольное приложение, оно снова будет работать).
Код и строка подключения:
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=****
Я добавил консольное приложение в свое решение после преобразованияв библиотеку классов.Код консольного приложения приведен ниже:
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