我有一个c#程序,需要通过JDBC连接到SQL。我读到 JDBC 可与 java 配合使用,并且由于我需要从 C# 使用它,所以我发现 jni4net 可以在两者之间架起桥梁。
我似乎找不到任何有关如何执行此操作的示例或教程。任何帮助将不胜感激。我已阅读并尝试使用 jni4net,但找不到任何连接到数据库的示例。
JDBC代表Java DataBase Connectivity,这意味着它是针对Java(或可以在Java虚拟机上运行的其他语言)的。 C# 是一种不同的语言,有自己的运行时。尽管可以从 C# 访问 Java,但对于数据库连接来说这样做可能会非常麻烦且缓慢。
相反,您应该为您的数据库系统寻找 ADO.net 数据库提供程序。大多数数据库系统都有一个。
您可以使用 robbiblubber.org JDBC 扩展 Libaray 通过 JDBC 从 .NET 连接到数据库。当然,如果有 ADO.NET 的本机驱动程序,您应该使用它。
查看这篇文章https://medium.com/@marketing_23529/jdbc-drivers-integration-across-c-and-languages-such-as-javascript-python-golang-c-perl-and-9efcfc6ec258介绍如何从任何语言使用 JDBC。它提倡通过中间人类或直接使用我们的产品 Javonet 与 JDBC 交互,但也讨论了其他替代方案。
事实上,通过运行时桥接或 GraalVM、JNBridge 或 Javonet 等技术,您可以轻松地与其他语言的 Java 类进行交互,包括 JDBC 相关的 Java Framework SDK。
不仅因为我为之工作,我还需要强调的是,通过 Javonet,您可以使用 C# 以及 JavaScript、Python、Ruby、Perl、GoLang 和 CPP 的 JDBC 驱动程序。
检查下面的代码示例:
Javonet.Activate("your-license-key");
var calledRuntime = Javonet.InMemory().Jvm();
string libraryPath = "<path to your JDBC SQLite JAR file>";
string className = "java.sql.DriverManager";
string connectionString = "jdbc:sqlite:<path to your SQLite file>";
string sql = "SELECT * FROM Orders WHERE Id = ?";
var calledRuntimeType = calledRuntime.GetType("java.sql.DriverManager").Execute();
var command = connection.InvokeInstanceMethod("prepareStatement", sql).Execute();
command.InvokeInstanceMethod("setInt", 1, 1).Execute();
var reader = command.InvokeInstanceMethod("executeQuery").Execute();
var id = (int)reader.InvokeInstanceMethod("getInt", "Id").Execute().GetValue();
希望有帮助!