如何在 HSQLDB 和 C# .net 之间建立连接?

Posted

技术标签:

【中文标题】如何在 HSQLDB 和 C# .net 之间建立连接?【英文标题】:How to form connection between HSQLDB and C# .net? 【发布时间】:2013-04-20 10:28:38 【问题描述】:

我已经看过 SharpHSQL 和 H2Sharp 但无法连接 HSQLDB。

【问题讨论】:

您为什么没有将任何解决方案标记为答案? 【参考方案1】:

试试这样: 确保您已添加 hsqldb.dll、IKVM.OpenJDK.Core.dll、IKVM.OpenJDK.Jdbc.dll 作为参考。 如果没有IKVM库,可以下载here。

在您的 C# 中:

using java.sql; //add this.

用于创建连接:

private Connection GetConnection()
    
        DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
        Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://[host]/[db name]", "[username]", "[password]");
        return conn;
    

如何使用:

public void LoadSetting(String userId)
    
        Connection conn = null;
        try
        
            //Connect it!
            conn = GetConnection();

            string query = "SELECT A.* FROM table A";

            PreparedStatement ps = conn.prepareStatement(query);

            ResultSet rs = ps.executeQuery();
            while (rs.next())
            
               //Get Query Result
               Console.WriteLn(rs.getString("COL1"));
               Console.WriteLn(rs.getString("COL2"));
            
         

         //Close the Connection
         finally
         
            if (conn != null && !conn.isClosed())
            
                conn.close();
                conn = null;
            
         
     

希望对您有所帮助。 干杯...

【讨论】:

如果您不要求所有代码都是本机 C#,这确实是一个可行的解决方案。谢谢你的主意。除了你提到的两个之外,你可能还需要添加更多的 IKVM dll 依赖项。【参考方案2】:

基本步骤:

    下载IKVM.NET 和HyperSQL (=HSQLDB) 驱动程序。

    使用 IKVM.NET 将 HSQLDB Java 驱动程序转换为 .NET DLL 以创建 hsqldb.dll

    将编译时依赖项添加到您的 C# 项目中:

hsqldb.dll IKVM.OpenJDK.Core.dll IKVM.OpenJDK.Jdbc.dll
    在运行 C# 程序时添加运行时依赖项:
IKVM.OpenJDK.Localedata.dll IKVM.OpenJDK.Text.dll IKVM.OpenJDK.Util.dll IKVM.Runtime.dll
    将连接字符串添加到您的 app.config 中:
<configuration>

  <connectionStrings>
    <add name="HyperSQL"
        connectionString="jdbc:hsqldb:hsql://localhost:9999/xdb;user=SA;password=;" />
  </connectionStrings>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
</configuration>
    C#代码:
using System;
using System.Configuration;
 
namespace HyperSQL

    class Program
    
        readonly static string CONNECTION_STRING = ConfigurationManager.ConnectionStrings["HyperSQL"].ConnectionString;
        const string SQL = "SELECT * FROM customer";
 
        static void Main(string[] args)
        
            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($"ID=rs.getInt("id")");
                        Console.WriteLine($"NAME=rs.getString("name")");
                        Console.WriteLine($"AGE=rs.getInt("age")");
                        Console.WriteLine($"ADDRESS=rs.getString("address")");
                        Console.WriteLine($"SALARY=rs.getInt("salary")");
 
                        Console.WriteLine("------------------");
                    
                
            
 
            Console.ReadLine();
        
    

这里是我的详细教程how to connect to HyperSQL from C#

【讨论】:

教程链接失效,请更新一下。谢谢,

以上是关于如何在 HSQLDB 和 C# .net 之间建立连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 HSQLDB 和 MySQL 之间的差异来处理 union/order?

HSQLDB:在测试数据库和生产数据库之间切换

表hsqldb之间的关系

hsqldb 如何创建视图

.NET 版本和 C# 版本之间的关系? [关闭]

如何在Visual Studio项目和单元测试项目之间建立联系?