.NET - Acesso a banco de dados C# e Java (JLCA)
Neste artigo eu vou mostrar que de certa forma o acesso a um banco de dados feito na linguagem C# é muito parecido com o que é feito na linguagem Java.
Não espere por benchmarks comparando as duas linguagens nem espere que eu tome o partido de uma e venha a denegrir a outra, para mim linguagens de programação são ferramentas para se realizar um serviço, basta usar a ferramenta certa para o serviço certo; não existe ferramenta melhor ou pior.
Mas voltando ao nosso assunto, C# e Java usam meios similares para acessar um banco de dados:
Os drivers de banco de dados como JDBC ou ODBC podem ser usados para acessar dados em Java e C#.
O driver Java DataBase Connectivity (JDBC) é usado em programas escritos na linguagem Java.
O driver ODBC Open DataBase Connectivity (ODBC) é uma interface de programação da Microsoft para acessar uma variedade de banco de dados relacionais.
Em Java , a informação da string de conexão para o driver para o tratamento de uma conexão é dado como a seguir:
final static private String url = "jdbc:oracle:server,usário,senha, …)";
Com C# , usando o .NET Framework, você não tem que carregar drivers ODBC ou JDBC para acessar um banco de dados.
Simplesmente defina a string de conexão para o objeto Connection do banco de dados conforme a seguir:
static string connectionString = "Initial Catalog=northwind;Data Source=(local);Integrated Security=SSPI;"; static SqlConnection cn = new SqlConnection(connectionString);
Em Java , para realizar uma operação de leitura em um banco de dados, você pode usar o objeto ResultSet criado pelo método executeQuery do objeto Statement. O objeto ResulstSet contém os dados retornados pela consulta.
Você pode interagir através do objeto ResultSet para acessar os dados. Veja a seguir um exemplo de código que realiza o acesso a dados usando a linguagem Java via JDBC:
try { Class.forName (_driver); c = DriverManager.getConnection(url, usuario, senha); } catch (Exception e) { // tratamento de exceção } try { Statement stmt = c.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM tabela "); while(results.next()) { String s = results.getString("nomeColuna"); // Exibe cada valor da coluna no ResultSet: } stmt.close(); } catch(java.sql.SQLException e) { //trata exceção para executeQuery e getString: } |
Vejamos agora a mesma tarefa em C#...
Usando a linguagem C# para acessar um banco de dados você vai precisar de:
A seguir temos o código para acessar um banco de dados com a linguagem C#;
namespace DataAccess { using System.Data; using System.Data.SqlClient; class DataAccess { //Esta é sua conexão com o banco de dados Northwind static string connectionString = "Initial Catalog=northwind;Data Source=(local);Integrated Security=SSPI;"; static SqlConnection cn = new SqlConnection(connectionString); // Este é o seu objeto command que executa uma instrução SQL contra a conexão static string sCommand = "SELECT * from Products"; //Este é o seu data adapter que entende banco de dados SQL static SqlDataAdapter da = new SqlDataAdapter(sCommand, cn); // Esta é a tabela que vai receber o resultado static DataTable dataTable = new DataTable(); static void Main() { try{ cn.Open(); // preenche o datatabel com o resultado da consulta SQL int recordsAffected = da.Fill(dataTable); if (recordsAffected > 0) { //percorre a tabela e exibe o primeiro campo foreach (DataRow dr in dataTable.Rows) { System.Console.WriteLine(dr[0]); } } } catch (SqlException e) { string msg = ""; for (int i=0; i < e.Errors.Count; i++) { msg += "Error #" + i + " Message: " + e.Errors[i].Message + "\n"; } System.Console.WriteLine(msg); } finally { if (cn.State != ConnectionState.Closed) { cn.Close(); } } } } } |
A sintaxe é muito parecida e os conceitos envolvidos também. Pensando nisso a Microsoft disponibilizou a ferramenta JLCA - Java Language Conversion Assistant , uma ferramenta que fornece a habilidade de converter o código Java e as chamadas para a linguagem Microsoft Visual C#.
Se você estiver interessado pegue o JLCA neste link: Java Language Conversion Assistant 2.0
Eu sei é apenas C#, mas eu gosto...
Referências: