VB6 - Acessando o SQL Server 2005 Express Edition
Já publiquei vários artigos mostrando como acessar via Visual Basic as principais bases de dados usadas atualmente : Access, SQL Server, FireBird, MySQL e PostGree. |
Vou incluir nesta lista o SQL Server 2005 Express Edition pois neste artigo eu mostro como você pode efetuar a conexão com uma base de dados SQL Server 2005 Express local e com um banco de dados .mdf em um diretório qualquer usando o novo provedor SQLNCLI.
A primeira coisa que você tem que atentar é que quando você instala o SQL Server 2005 (seja a versão Express ou a completa) é incluído um novo provedor de bases de dados OLE DB chamado SQLNCLI.
Este provedor deve ser usado na string de conexão que é utilizada para efetuar a conexão com o SQL Server 2005. Ele ocupou o lugar do provedor SQLOLEDB que é usado para acessar uma base de dados SQL Server 2000.
Para acompanhar este artigo você vai precisar ter instalado os seguintes itens:
Acessando o SQL Server 2005 Express Local
Vou acessar a tabela Clientes do banco de dados Cadastro que eu criei no SQL Server 2005 Express usando o Management Studio. Se você não sabe como criar um banco de dados usando esta ferramenta leia o artigo: VB.NET 2005 - Criando Objetos Básicos de dados.
Abaixo eu mostro o meu SQL Server 2005 Express aberto no Management Studio exibindo o banco de dados Cadastro e a tabela Clientes com alguns registros que eu criei diretamente na ferramenta.
Nota: Se você não conhece o Management Studio leia o artigo: .NET 2005 - Usando o SQL Server Management Studio
Agora eu vou criar um projeto do tipo STANDARD EXE no Visual Basic 6.0 com o nome de VB_SQL2006.vbp, e, no formulário padrão eu vou usar os seguintes controles:
Para incluir uma referência ao componente MSHFlexGrid , clique no menu Project -> Components e a seguir na aba Controls marque o componente: Microsoft Hierarchical FlexGrid Control 6.0 (SP4) (OLEDB)
Não esqueça também de incluir uma referência a biblioteca ADO - Microsoft ActiveX Data Objects 2.8 Library - para ter acesso aos objetos de acesso a dados ADO.
Abaixo temos o leiaute usado no formulário:
Vamos agora digitar o código no evento Click do botão - Exibir Dados - Clientes - para acessar a tabela Clientes e mostrar os dados no grid.
Private Sub Command1_Click() ' A conexão com o banco de dados Dim cn As ADODB.Connection Set cn = New ADODB.Connection ' A cadeia de conexão Dim SQL As String ' Selecionando os dados da tabela Clientes SQL = "SELECT * FROM Clientes" cn.Open "Provider=SQLNCLI; " & _ "Initial Catalog=Cadastro; " & _ "Data Source=(local)\SQLEXPRESS; " & _ "integrated security=SSPI; persist security info=True;" ' O recordset para acessar s dados Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ' Abrindo o recordset de forma estática pois não vou tratar os dados rs.Open SQL, cn, adOpenStatic ' Atribuir o recordset ao FlexGrid Set MSHFlexGrid1.DataSource = rs 'fecha o recordset e a conexao rs.Close cn.Close End Sub |
Executando o projeto , teclando F5, e clicando no botão iremos obter:
Para exibir os registros da linha selecionada no Grid nas caixas de texto eu criei a seguinte rotina ligada ao evento Click do MSHFlexGrid:
Private Sub MSHFlexGrid1_Click() With MSHFlexGrid1 Text1.Text = .TextMatrix(.Row, 1) Text2.Text = .TextMatrix(.Row, 2) Text3.Text = .TextMatrix(.Row, 3) Text4.Text = .TextMatrix(.Row, 4) End With End Sub |
Acessando um arquivo SQL Server 2005 Express em um diretório
Para poder acessar um banco de dados SQL Server que esta em uma pasta qualquer teremos que indicar a rota (caminho) do arquivo com a extensão .mdf. A string de conexão deverá ser alterada para indicar o caminho , a instância e o provedor SQLNCLI. Veja abaixo:
Provider=SQLNCLI;
AttachDBFileName= caminho completo do banco de dados .mdf;
Data Source=(local)\SQLEXPRESS;
integrated security=SSPI; persist security info=True;
Vamos então acessar o banco de dados Northwind.mdf que esta na pasta c:\dados em minha máquina local (Veja na sua máquina o local correto), e, vamos exibir os dados da tabela Employees.
O código que deverá ser colocado no evento Click do botão - Exibir dados Employees - é o seguinte:
Private Sub Command2_Click() ' A conexão com o banco de dados Dim cn As ADODB.Connection Set cn = New ADODB.Connection ' variavel SQL Dim SQL As String ' Para usar um arquivo diretamente Dim BD As String ' Caminho do banco de dados BD = "C:\dados\Northwnd.mdf" ' comando SQL para selecionar os dados da tabela Employees SQL = "SELECT * FROM Employees" cn.Open "Provider=SQLNCLI; " & _ "AttachDBFileName=" & BD & "; " & _ "Data Source=(local)\SQLEXPRESS; " & _ "integrated security=SSPI; persist security info=True;" 'recordset para acessar os dados Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ' Abrir o recordset de forma estática rs.Open SQL, cn, adOpenStatic 'atribuir o recordset ao grid Set Me.MSHFlexGrid1.DataSource = rs rs.Close cn.Close End Sub |
Executando o projeto e clicando no botão - Exibir dados Employees - iremos obter:
Pegue o projeto completo aqui: VB_SQL2005.zip
Eu sei é apenas o velho e bom Visual Basic mas eu gosto...
Referências :
José Carlos Macoratti