在 JDBC 中找到的对象与 ADO.Net 中找到的对象之间有什么类比?
我知道JDBC和ADO.Net中的对象模型并不完全相同,但我认为可以在它们中找到一些类比(以及值得说明的关键差异)。
对于那些知道一个API并且想要学习另一个API,可能作为起点的人,或者避免因想要学习的API所做的假设引起的误解,这将是有用的。
例如:哪个ADO.Net对象提供与JDBC ResultSet相同的功能/行为?与PreparedStatemes相同,依此类推......
答案 0 :(得分:5)
以下是ADO.NET的简单序列:
// 1. create a connection SqlConnection conn = new SqlConnection(xyz) // 2. open the connection conn.Open(); // 3. create a command SqlCommand cmd = new SqlCommand("select * from xyz", conn); // 4. execute and receive the result in a reader SqlDataReader rdr = cmd.ExecuteReader(); // 5. get the results while (rdr.Read()) { //dosomething }
以下是JDBC的简单序列:
// 1. create a connection Connection con = DriverManager.getConnection(xyz); // 2. create a statement Statement stmt = con.createStatement(); // 3. execute and receive results in a result set ResultSet rs = stmt.executeQuery("SELECT * from xyz"); // 4. Get the results while (rs.next()) { // do something }
这是类比(ADO.NET => JDBC):
SqlConnection => Connection SqlCommand => Statement SqlDataReader => ResultSet
答案 1 :(得分:2)
对于jdbc不是很透彻,但据我所知,ADO.NET遵循断开连接的体系结构,其中仅在查询必须执行或读取时建立连接。读取读取器后,可以关闭连接。使用数据集和数据适配器实现数据缓存。在ADO.NET中,每个连接只允许一个阅读器。虽然在jdbc中确实可以实现断开连接的体系结构,但它基于实时连接的概念,每个连接可以有多个读取器。
API的另一个不同之处是there is built in functionality in jdbc to get the last inserted id,而ADO缺少一个。
Also read a nice comparison on data caching in ADO and jdbc.