2010-10-27 6 views
6

Was in ADO.Net gefunden in JDBC und diejenigen, fanden die Analogien zwischen den Objekten werden?JDBC und ADO.Net: API Vergleich

Ich weiß, dass das Objektmodell in JDBC und ADO.Net nicht genau gleich sind, aber ich denke, dass einige Analogien zwischen ihnen gefunden werden können (und wichtige Unterschiede, die es wert sind).

Das wäre nützlich für diejenigen, die eine API kennen und die andere lernen möchten, als Ausgangspunkt dienen oder Missverständnisse vermeiden, die durch Annahmen verursacht werden, die man über die API macht, die lernen will.

Beispiel: Welches ADO.Net-Objekt bietet dieselbe Funktionalität/dasselbe Verhalten wie das JDBC-ResultSet? das gleiche gilt für PreparedStatemes, und so weiter ...

Antwort

5

Hier ist eine einfache Sequenz für 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 
} 

Hier ist eine einfache Sequenz für 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 
} 

Und hier die Analogie (ADO.NET => JDBC):

 
SqlConnection => Connection 
SqlCommand => Statement 
SqlDataReader => ResultSet 
+2

Was ist JDBC des PreparedStatements, DataSet ADO.Net, ...? – mmutilva

2

Nicht sehr gründlich mit jdbc, aber von dem, was ich wissen, dass ADO.NET einer getrennten Architektur folgt, bei der eine Verbindung nur für die Zeit aufgebaut wird, in der eine Abfrage ausgeführt oder gelesen werden muss. Sobald der Leser gelesen wurde, kann die Verbindung geschlossen werden. Das Daten-Caching wird mithilfe von Datasets und Datenadaptern erreicht. In ADO.NET ist nur ein Reader pro Verbindung erlaubt. Während eine getrennte Architektur in jdbc sicherlich möglich ist, basiert sie auf dem Konzept einer Liveverbindung, bei der mehrere Leser pro Verbindung vorhanden sein können.

Ein weiterer Unterschied in der API ist, dass there is built in functionality in jdbc to get the last inserted id, während ADO fehlt.

Also read a nice comparison on data caching in ADO and jdbc.

+1

Auch diese alte MSDN-Ressource summiert sich mit dem Vergleich: https://msdn.microsoft.com/en-us/library/aa478977.aspx und hat eine gute Erklärung für die getrennten und verbundenen Modelle. –