JDBC和ADO.Net:API比较

时间:2010-10-27 13:05:34

标签: ado.net jdbc comparison

JDBC 中找到的对象与 ADO.Net 中找到的对象之间有什么类比?

我知道JDBC和ADO.Net中的对象模型并不完全相同,但我认为可以在它们中找到一些类比(以及值得说明的关键差异)。

对于那些知道一个API并且想要学习另一个API,可能作为起点的人,或者避免因想要学习的API所做的假设引起的误解,这将是有用的。

例如:哪个ADO.Net对象提供与JDBC ResultSet相同的功能/行为?与PreparedStatemes相同,依此类推......

2 个答案:

答案 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.