[.NET] Acesso ao SQLServer através de Webservice e ADO.NET
Objectivo: Criar um webservice que disponibiliza métodos para aceder a uma base de dados.
Tecnologia:
- Microsoft Visual Studio .NET 2003
- Microsoft SQL Server 2000
- IIS
- C#
Este tutorial pretende, numa primeira fase, demonstrar como utilizar a tecnologia ADO.NET para comunicar com o SQL Server. Aproveitando depois esse trabalho, constrói-se um webservice que irá disponibilizar métodos para interagir com uma base de dados.
1ª Parte
Nota: Para que se possa utilizar ADO.NET é necessário importar dois namespaces: System.Data e System.Data.SqlClient.
.Ligar à base de dados
Para este efeito utiliza-se o objecto SqlConnection.
[C#]
String connString = "Data Source=localhost; Integrated Security=SSPI; Initial Catalog=PSA"; SqlConnection sqlConn = new SqlConnection(connString);
sqlConn.Open();
//Fazer operações...
sqlConn.Close();
A connection string fornece os dados necessários à conexão. Neste caso o data source é local e a base de dados que se pretende utilizar tem o nome PSA. Ao utilizar o método de autenticação Integrated Security=SSPI, e como neste caso o acesso vai ser feito via webservice, o que vai acontecer é que o login vai ser feito com o utilizador IUSR_NOMEDAMÁQUINA o que se traduz do lado do SQL Server como o utilizador guest. Ou seja, é necessário dar permissões ao guest sobre a base de dados ou as tabelas desejadas.
Outro ponto chave consiste em fechar sempre a conexão depois de já não ser necessária, para que possa ser devolvida à pool de conexões. A reutilização de conexões é feita se a connection string for a mesma.
.Executar uma query
Demonstra-se de seguida como preencher um DataSet com o resultado de uma query.
[C#]
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT category from categories",sqlConn);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
Utiliza-se o objecto SqlDataAdapter, passando como parâmetro a query e a conexão. A query só é executada aquando da operação Fill.
Existem no entanto casos, em que não interessa receber o resultado de uma operação (por exemplo: uma inserção ou remoção). Para este caso, e para demonstrar uma técnica diferente, utiliza-se o objecto SqlCommand.
[C#]
sqlComm.ExecuteNonQuery();
Se a query retornasse apenas um valor, poder-se-ia utilizar ExecuteScalar. Para obter um efeito semelhante à query select utilizar-se-ia, por sua vez, ExecuteReader que retorna um SqlDataReader.
Terminada a primeira fase, surge a fase trivial, criar um webservice que disponibilize métodos para manipular a base de dados.
2ª Parte
Criar um webservice utilizando o VS é muito fácil, basta criar um novo projecto desse tipo. Existem porém algumas coisas a apontar:
- A classe tem de herdar de System.Web.Services.WebService (feito automaticamente pelo VS)
- Todos os métodos marcados com o atributo [WebMethod] poderão ser invocados remotamente.
Para que todo o puzzle se junte convém olhar para o código fonte fornecido.
[código fonte] Nota: Descompactar e colocar a directoria na wwwroot do IIS.
[versão PDF]

0 Comments:
Enviar um comentário
<< Home