SlideShare uma empresa Scribd logo
1 de 10
VB .NET - Tratando com instâncias do SQL Server,
Banco de dados e Tabelas
Neste artigo vou mostrar como usar os recursos do SQL Server e através de
uma aplicação Visual Basic realizar algumas operações com a instância do SQL
Server Express local instalado.
Nossa aplicação irá precisar usar um banco de dados chamado EscolaDB e uma
tabela Alunos e iremos criar esses recursos em tempo de execução se eles não
existirem verificando se existe uma instância do SQL Server, o banco de dados
e a tabela.
Então, ao executar a aplicação Visual Basic pela primeira vez ela deverá fazer
o seguinte:
1- Verificar se existe uma instância do SQL Server rodando ou se ela esta
parada ou pausada;
Se o SQL Server não estiver em execução será exibida uma mensagem ao
usuário para que verifique se o SQL Server esta parado ou suspenso e que
ponha a instância em execução
2- Se existir um a instância do SQL Server em execução vamos verificar se
o banco de dados EscolaDB existe;
- Se o banco de dados não existir iremos criar o banco de dados no SQL Server
rodando um script SQL existente no projeto;
- A seguir vamos verificar se a tabela existe no banco de dados, e executar um
script SQL existente no projeto para criar a tabela no banco de dados;
3 - Verificar se o banco de dados existe e se a tabela não existe;
- A seguir vamos verificar se a tabela existe no banco de dados, e executar um
script SQL existente no projeto para criar a tabela no banco de dados;
Os recursos usados no projeto são :
Visual Basic 2010 Express Edition
SQL Server 2008 Express Edition

Criando o Projeto
Abra o Visual Basic 2010 Express Editon e crie um projeto do tipo Window
Forms Application com o nome CriaSQLServerNet;
No formulário form1.vb inclua um controle Button (btnEncerrar) com o texto
Sair;
Abaixo temos a imagem do formulário form1.vb com imagem ilustrativa:
Clique com o botão direito do mouse sobre o nome do projeto e selecione Add
->New Folder e informe o nome DALHelper;
Repita o procedimento acima e crie a pasta Scripts;
Neste momento nosso projeto irá apresentar na janela Solution Explorer a
estrutura mostrada na figura abaixo :

Na pasta Scripts vamos criar os Scripts SQL para criar o banco de dados
EscolaDB e a tabela Alunos e na pasta DALHelper vamos criar a classe com os
métodos que irão verificar a instância do SQL Server, obter o nome da
instância, criar o banco de dados e a tabela;

Criando os scripts SQL
Clique com o botão direito do mouse sobre a pasta Scripts e selecione Add
New Item;
A seguir selecione o template Code File e informe o nome CriaEscolaBD.sql e
clique no botão Add;
Repita o procedimento acima e crie outro arquivo de script com o nome
CriaTabelaAlunos.sql;
1- Abra o arquivo CriaEscolaBD.sql e digite o código a seguir :
CREATE DATABASE [EscolaDB] ON PRIMARY
( NAME = N'EscolaDB', FILENAME = N'c:Program FilesMicrosoft SQL
ServerMSSQL10_50.SQLEXPRESSMSSQLDATAEscolaDB.mdf' , SIZE = 2304KB , MAXSIZE =
UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'EscolaDB_log', FILENAME = N'c:Program FilesMicrosoft SQL
ServerMSSQL10_50.SQLEXPRESSMSSQLDATAEscolaDB_log.LDF' , SIZE = 576KB , MAXSIZE =
2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [EscolaDB] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [EscolaDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [EscolaDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [EscolaDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [EscolaDB] SET ANSI_PADDING OFF
GO
ALTER DATABASE [EscolaDB] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [EscolaDB] SET ARITHABORT OFF
GO
ALTER DATABASE [EscolaDB] SET AUTO_CLOSE ON
GO
ALTER DATABASE [EscolaDB] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [EscolaDB] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [EscolaDB] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [EscolaDB] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [EscolaDB] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [EscolaDB] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [EscolaDB] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [EscolaDB] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [EscolaDB] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO
ALTER DATABASE
GO

[EscolaDB] SET ENABLE_BROKER
[EscolaDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
[EscolaDB] SET DATE_CORRELATION_OPTIMIZATION OFF
[EscolaDB] SET TRUSTWORTHY OFF
[EscolaDB] SET ALLOW_SNAPSHOT_ISOLATION OFF
[EscolaDB] SET PARAMETERIZATION SIMPLE
[EscolaDB] SET READ_COMMITTED_SNAPSHOT OFF
[EscolaDB] SET HONOR_BROKER_PRIORITY OFF
[EscolaDB] SET READ_WRITE
[EscolaDB] SET RECOVERY SIMPLE
[EscolaDB] SET MULTI_USER
[EscolaDB] SET PAGE_VERIFY CHECKSUM
[EscolaDB] SET DB_CHAINING OFF

Este script irá criar o banco de dados SQL Server EscolaDB na instância local
do SQL Server;
Agora abra o arquivo CriaTabelaAlunos.sql e digite o código abaixo:
SET QUOTED_IDENTIFIER OFF;
GO
USE [EscolaDB];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO
IF OBJECT_ID(N'[dbo].[Alunos]', 'U') IS NOT NULL
DROP TABLE [dbo].[Alunos];
GO
CREATE TABLE [dbo].[Alunos] (
[alunoID] int IDENTITY(1,1) NOT NULL,
[nome] nvarchar(50) NULL,
[endereco] nvarchar(50) NULL,
[cep] nvarchar(50) NULL,
[cidade] nvarchar(50) NULL,
[pais] nvarchar(50) NULL,
[foto] varbinary(max) NULL,
[notas] nvarchar(max) NULL
);
GO
ALTER TABLE [dbo].[Alunos]
ADD CONSTRAINT [PK_Alunos]
PRIMARY KEY CLUSTERED ([alunoID] ASC);
Este script irá criar a tabela Alunos no banco de dados EscolaDB com os
seguintes campos:
alunoID, nome, endereco,cep, cidade, pais, foto, notas onde alunoID é
do tipo identity e chave primária;
Vamos incluir na pasta Scripts alguns arquivos .dll referente ao SQL que serão
usados em nossa classe DALHelper;
Clique com o botão direito do mouse sobre a pasta Scripts e selecione Add ->
Existing Item e selecione os arquivo abaixo na pasta : C:Program
FilesMicrosoft SQL Server100SDKAssemblies

Agora vamos criar a nossa classe DALHelper na pasta DALHelper;
Selecione a pasta DALHelper e no menu Project clique em Add Class e
informe o nome DALHelper.vb;
A seguir digite o código abaixo neste arquivo:
Imports
Imports
Imports
Imports
Imports
Imports

System
System.Data.SqlClient
System.IO
Microsoft.SqlServer.Management.Smo
System.ServiceProcess
System.Reflection
Public Class DALHelper
'estas constantes poderiam ser obtidas de um arquivo de configuração externo
'para simplificar o código estou declarando-as como constantes no arquivo DALHelper
Public Const strNomeBancoDados As String = "EscolaDB"
Public Const strNomeTabela As String = "Alunos"
Public Const strSQLCriaTabelaAlunos As String = "....ScriptsCriaTabelaAlunos.sql"
Public Const strSQLCriaBancoDadosEscolaDB As String = "....ScriptsCriaEscolaBD.sql"
Public Shared strConnString As String = ""
'verifica se o SQL Server esta em execução
Public Shared Function verificaSeSQLServerNaoEstaRodando() As Boolean
Dim servicoControle As New ServiceController("MSSQL$SQLEXPRESS")
If servicoControle.Status <> ServiceControllerStatus.Running OrElse
servicoControle.Status = ServiceControllerStatus.Stopped
OrElse servicoControle.Status = ServiceControllerStatus.Paused Then
servicoControle.Start()
Return True
End If
Return False
End Function
Public Shared Function verificaSeBancoDadosExiste(ByVal strNomeBD As String) As Boolean
'Inclua referências a todas as .dll's que estão na pasta "Scripts"
'estes arquivos dll's estão na pasta C:Program FilesMicrosoft SQL
Server100SDKAssemblies
Dim dbServer As New Server(GetNomeSQLServer())
If dbServer.Databases(strNomeBD) IsNot Nothing Then
Return True
End If
Return False
End Function
Private Shared Function GetNomeSQLServer() As String
'Nome do PC local
Dim strPCname As String = Environment.MachineName
' nome do serviço do SQL Server Express
Dim strInstancia As String = "MSSQL$SQLEXPRESS"
Dim strNomeSQLServer As String = String.Empty
' Inclua uma referência a : System.ServiceProcess;
Dim servicos As ServiceController() = ServiceController.GetServices()
' percorre os serviços
For Each servico As ServiceController In servicos
If servico Is Nothing Then
Continue For
End If
Dim strNomeDoServico As String = servico.ServiceName
If strNomeDoServico.Contains(strInstancia) Then
strNomeSQLServer = strNomeDoServico
End If
Next
Dim IndiceInicio As Integer = strNomeSQLServer.IndexOf("$")
If IndiceInicio > -1 Then
'strSqlServerName=NomeDoSeuPCSQLEXPRESS;
strNomeSQLServer = strPCname + "" + strNomeSQLServer.Substring(IndiceInicio + 1)
End If
Return strNomeSQLServer
End Function
Public Shared Sub CriaBancoDeDados(ByVal strNomeDB As String)
Dim dbServidor As New Server(GetNomeSQLServer())
Dim mBancoDeDados As New Database(dbServidor, strNomeDB)
'cria o banco de dados
mBancoDeDados.Create()
End Sub
Public Shared Function VerificaSeTabelaExiste(ByVal strNomeBD As String, ByVal
strNomeTabela As String) As Boolean
'pega o nome do servidor e do banco de dados
Dim dbServidor As New Server(GetNomeSQLServer())
Dim mBancoDeDados As Database = dbServidor.Databases(strNomeBD)
' percorre todas as tabelas do banco de dados
For Each mTabela As Table In mBancoDeDados.Tables
If mTabela.Name = strNomeTabela Then
'Achou a tabela no banco de dados
Return True
End If
Next
'tabela não foi encontrada
Return False
End Function
Public Shared Sub ExecutaScriptSQL_CriarTabelaAluno(ByVal strCaminhoArquivo As String)
Dim asm As Assembly = Assembly.GetEntryAssembly()
Dim diretorioAplicacao As String = Path.GetDirectoryName(asm.Location)
Dim caminhoArquivo As String = Path.Combine(diretorioAplicacao, strCaminhoArquivo)
Dim Arquivo As New FileInfo(caminhoArquivo)
Dim strScript As String = Arquivo.OpenText().ReadToEnd()
strScript = strScript.Replace("GO" & vbCr & vbLf, "")
Using conn As New SqlConnection(MontaStringDeConexao())
conn.Open()
Dim cmd As New SqlCommand(strScript, conn)
Try
cmd.ExecuteNonQuery()
Catch excp As Exception
Throw
End Try
End Using
End Sub
Private Shared Function MontaStringDeConexao() As String
Dim strSqlServerNome As String = GetNomeSQLServer()
Dim strConnString As String = "Data Source=" & strSqlServerNome & ";" & "Initial
Catalog=" + DALHelper.strNomeBancoDados + ";Integrated Security=True"
Return strConnString
End Function
End Class

Nesta classe temos o seguinte:
A declaração dos namespaces usados:
Imports System
Imports System.Data.SqlClient
Imports System.IO
Imports Microsoft.SqlServer.Management.Smo
Imports System.ServiceProcess
Imports System.Reflection
A definição de constantes contendo o nome do banco de dados, da tabela e da
localização dos scripts para criar o banco de dados e a tabela :
Public Const strNomeBancoDados As String = "EscolaDB"
Public Const strNomeTabela As String = "Alunos"
Public Const strSQLCriaTabelaAlunos As String =
"....ScriptsCriaTabelaAlunos.sql"
Public Const strSQLCriaBancoDadosEscolaDB As String =
"....ScriptsCriaEscolaBD.sql"
Public Shared strConnString As String = ""
Os métodos:
verificaSeSQLServerNaoEstaRodando
verificaSeBancoDadosExiste
GetNomeSQLServer
CriaBancoDeDados
VerificaSeTabelaExiste
ExecutaScriptSQL_CriarTabelaAluno
MontaStringDeConexao
Todos os métodos são estáticos (Shared) e assim não precisaremos criar uma
instância da classe DALHelper para usá-los.
Agora já podemos usar a classe e os scripts criados.
Selecione o formulário form1.vb e no evento Load do formulário digite o
código abaixo:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
verificaBancoDeDados_Tabela()
End Sub
A rotina verificaBancoDeDados_Tabela possui o seguinte código:
Private Sub verificaBancoDeDados_Tabela()
'verifica se o SQL Server esta em execução
If DALHelper.verificaSeSQLServerNaoEstaRodando() Then
MessageBox.Show("O SQLServer não esta em execução. Pode estar parado ou
pausado.", "Verifica SQLServer", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("O SQL Server esta instalado e em execução.", "Information",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
'se o banco de dados não existir roda o script para criar o banco de dados
'se a tabela não existir roda o script para crir a tabela
If DALHelper.verificaSeBancoDadosExiste(DALHelper.strNomeBancoDados) = False Then
DALHelper.CriaBancoDeDados(DALHelper.strNomeBancoDados)
MessageBox.Show("O banco de dados : " + DALHelper.strNomeBancoDados + " foi
criado no SQLServer com sucesso.", "Information", MessageBoxButtons.OK,
MessageBoxIcon.Information)
If DALHelper.VerificaSeTabelaExiste(DALHelper.strNomeBancoDados,
DALHelper.strNomeTabela) = False Then
DALHelper.ExecutaScriptSQL_CriarTabelaAluno(DALHelper.strSQLCriaTabelaAlunos)
MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " foi criada no
SQLServer com sucesso.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("O Banco de dados : " + DALHelper.strNomeBancoDados + " já
existe no SQL Server.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
' se o banco de dados existir e a tabela não existir - roda o script para criar a tabela e
sai
If (DALHelper.verificaSeBancoDadosExiste(DALHelper.strNomeBancoDados) = True)
AndAlso (DALHelper.VerificaSeTabelaExiste(DALHelper.strNomeBancoDados,
DALHelper.strNomeTabela) = False) Then
DALHelper.ExecutaScriptSQL_CriarTabelaAluno(DALHelper.strSQLCriaTabelaAlunos)
MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " foi criada com sucesso
no SQLServer", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " já existe no Banco de
dados.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

O código acima usa os métodos da classe DALHelper para executar as
operações definidas.
Executando a aplicação e usando a ferramenta SQL Server Management
Studio para verificação iremos ver o banco de dados EscolaDB e a tabela
Alunos criados conforme esperávamos conforme a figura abaixo:
Pegue o projeto completo aqui:

CriaSQLServerNet.zip

Joã 14:1 Não se turbe o vosso coração; credes em Deus, crede
também em mim.
Joã 14:2 Na casa de meu Pai há muitas moradas; se não fosse
assim, eu vo-lo teria dito; vou preparar-vos lugar.
Joã 14:3 E, se eu for e vos preparar lugar, virei outra vez, e vos
tomarei para mim mesmo, para que onde eu estiver estejais vós
também.
Joã 14:4 E para onde eu vou vós conheceis o caminho.
Joã 14:5 Disse-lhe Tomé: Senhor, não sabemos para onde vais; e
como podemos saber o caminho?
Joã 14:6 Respondeu-lhe Jesus: Eu sou o caminho, e a verdade, e a
vida; ninguém vem ao Pai, senão por mim.

Mais conteúdo relacionado

Mais procurados

Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Enviar mensagem via console no windows server 2012
Enviar mensagem via console no windows server 2012Enviar mensagem via console no windows server 2012
Enviar mensagem via console no windows server 2012jcis_udo
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomNelson Glauber Leal
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinNelson Glauber Leal
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryMarketing Digital ODIG
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012Rodrigo Ribeiro
 

Mais procurados (20)

JDBC
JDBCJDBC
JDBC
 
JQuery
JQuery JQuery
JQuery
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Enviar mensagem via console no windows server 2012
Enviar mensagem via console no windows server 2012Enviar mensagem via console no windows server 2012
Enviar mensagem via console no windows server 2012
 
Aprenda jQuery 1.3
Aprenda jQuery 1.3Aprenda jQuery 1.3
Aprenda jQuery 1.3
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com Room
 
Introdução a jQuery
Introdução a jQueryIntrodução a jQuery
Introdução a jQuery
 
React js
React js React js
React js
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
Java script aula 07 - eventos
Java script   aula 07 - eventosJava script   aula 07 - eventos
Java script aula 07 - eventos
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 
Testando API Rest com Insomnia Core
Testando API Rest com Insomnia CoreTestando API Rest com Insomnia Core
Testando API Rest com Insomnia Core
 
J query basico
J query basicoJ query basico
J query basico
 
Java script aula 06 - dom
Java script   aula 06 - domJava script   aula 06 - dom
Java script aula 06 - dom
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQuery
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 

Semelhante a Vb

Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphihildebertomelo
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo TextoCaio Lima
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosClayton de Almeida Souza
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebDalton Martins
 

Semelhante a Vb (20)

Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Java13
Java13Java13
Java13
 
Crud
CrudCrud
Crud
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
J query
J queryJ query
J query
 
Mini curso de c#.net
Mini curso de c#.netMini curso de c#.net
Mini curso de c#.net
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Daw slide 07
Daw slide 07Daw slide 07
Daw slide 07
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo Texto
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de Dados
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 

Vb

  • 1. VB .NET - Tratando com instâncias do SQL Server, Banco de dados e Tabelas Neste artigo vou mostrar como usar os recursos do SQL Server e através de uma aplicação Visual Basic realizar algumas operações com a instância do SQL Server Express local instalado. Nossa aplicação irá precisar usar um banco de dados chamado EscolaDB e uma tabela Alunos e iremos criar esses recursos em tempo de execução se eles não existirem verificando se existe uma instância do SQL Server, o banco de dados e a tabela. Então, ao executar a aplicação Visual Basic pela primeira vez ela deverá fazer o seguinte: 1- Verificar se existe uma instância do SQL Server rodando ou se ela esta parada ou pausada; Se o SQL Server não estiver em execução será exibida uma mensagem ao usuário para que verifique se o SQL Server esta parado ou suspenso e que ponha a instância em execução 2- Se existir um a instância do SQL Server em execução vamos verificar se o banco de dados EscolaDB existe; - Se o banco de dados não existir iremos criar o banco de dados no SQL Server rodando um script SQL existente no projeto; - A seguir vamos verificar se a tabela existe no banco de dados, e executar um script SQL existente no projeto para criar a tabela no banco de dados; 3 - Verificar se o banco de dados existe e se a tabela não existe; - A seguir vamos verificar se a tabela existe no banco de dados, e executar um script SQL existente no projeto para criar a tabela no banco de dados; Os recursos usados no projeto são : Visual Basic 2010 Express Edition SQL Server 2008 Express Edition Criando o Projeto Abra o Visual Basic 2010 Express Editon e crie um projeto do tipo Window Forms Application com o nome CriaSQLServerNet; No formulário form1.vb inclua um controle Button (btnEncerrar) com o texto Sair; Abaixo temos a imagem do formulário form1.vb com imagem ilustrativa:
  • 2. Clique com o botão direito do mouse sobre o nome do projeto e selecione Add ->New Folder e informe o nome DALHelper; Repita o procedimento acima e crie a pasta Scripts; Neste momento nosso projeto irá apresentar na janela Solution Explorer a estrutura mostrada na figura abaixo : Na pasta Scripts vamos criar os Scripts SQL para criar o banco de dados EscolaDB e a tabela Alunos e na pasta DALHelper vamos criar a classe com os métodos que irão verificar a instância do SQL Server, obter o nome da instância, criar o banco de dados e a tabela; Criando os scripts SQL
  • 3. Clique com o botão direito do mouse sobre a pasta Scripts e selecione Add New Item; A seguir selecione o template Code File e informe o nome CriaEscolaBD.sql e clique no botão Add; Repita o procedimento acima e crie outro arquivo de script com o nome CriaTabelaAlunos.sql; 1- Abra o arquivo CriaEscolaBD.sql e digite o código a seguir : CREATE DATABASE [EscolaDB] ON PRIMARY ( NAME = N'EscolaDB', FILENAME = N'c:Program FilesMicrosoft SQL ServerMSSQL10_50.SQLEXPRESSMSSQLDATAEscolaDB.mdf' , SIZE = 2304KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'EscolaDB_log', FILENAME = N'c:Program FilesMicrosoft SQL ServerMSSQL10_50.SQLEXPRESSMSSQLDATAEscolaDB_log.LDF' , SIZE = 576KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO ALTER DATABASE [EscolaDB] SET COMPATIBILITY_LEVEL = 100 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [EscolaDB].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [EscolaDB] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [EscolaDB] SET ANSI_NULLS OFF GO ALTER DATABASE [EscolaDB] SET ANSI_PADDING OFF GO ALTER DATABASE [EscolaDB] SET ANSI_WARNINGS OFF GO ALTER DATABASE [EscolaDB] SET ARITHABORT OFF GO ALTER DATABASE [EscolaDB] SET AUTO_CLOSE ON GO ALTER DATABASE [EscolaDB] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [EscolaDB] SET AUTO_SHRINK OFF GO ALTER DATABASE [EscolaDB] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [EscolaDB] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [EscolaDB] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [EscolaDB] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [EscolaDB] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [EscolaDB] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [EscolaDB] SET RECURSIVE_TRIGGERS OFF GO
  • 4. ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO ALTER DATABASE GO [EscolaDB] SET ENABLE_BROKER [EscolaDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF [EscolaDB] SET DATE_CORRELATION_OPTIMIZATION OFF [EscolaDB] SET TRUSTWORTHY OFF [EscolaDB] SET ALLOW_SNAPSHOT_ISOLATION OFF [EscolaDB] SET PARAMETERIZATION SIMPLE [EscolaDB] SET READ_COMMITTED_SNAPSHOT OFF [EscolaDB] SET HONOR_BROKER_PRIORITY OFF [EscolaDB] SET READ_WRITE [EscolaDB] SET RECOVERY SIMPLE [EscolaDB] SET MULTI_USER [EscolaDB] SET PAGE_VERIFY CHECKSUM [EscolaDB] SET DB_CHAINING OFF Este script irá criar o banco de dados SQL Server EscolaDB na instância local do SQL Server; Agora abra o arquivo CriaTabelaAlunos.sql e digite o código abaixo: SET QUOTED_IDENTIFIER OFF; GO USE [EscolaDB]; GO IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]'); GO IF OBJECT_ID(N'[dbo].[Alunos]', 'U') IS NOT NULL DROP TABLE [dbo].[Alunos]; GO CREATE TABLE [dbo].[Alunos] ( [alunoID] int IDENTITY(1,1) NOT NULL, [nome] nvarchar(50) NULL, [endereco] nvarchar(50) NULL, [cep] nvarchar(50) NULL, [cidade] nvarchar(50) NULL, [pais] nvarchar(50) NULL, [foto] varbinary(max) NULL, [notas] nvarchar(max) NULL ); GO ALTER TABLE [dbo].[Alunos] ADD CONSTRAINT [PK_Alunos] PRIMARY KEY CLUSTERED ([alunoID] ASC);
  • 5. Este script irá criar a tabela Alunos no banco de dados EscolaDB com os seguintes campos: alunoID, nome, endereco,cep, cidade, pais, foto, notas onde alunoID é do tipo identity e chave primária; Vamos incluir na pasta Scripts alguns arquivos .dll referente ao SQL que serão usados em nossa classe DALHelper; Clique com o botão direito do mouse sobre a pasta Scripts e selecione Add -> Existing Item e selecione os arquivo abaixo na pasta : C:Program FilesMicrosoft SQL Server100SDKAssemblies Agora vamos criar a nossa classe DALHelper na pasta DALHelper; Selecione a pasta DALHelper e no menu Project clique em Add Class e informe o nome DALHelper.vb; A seguir digite o código abaixo neste arquivo: Imports Imports Imports Imports Imports Imports System System.Data.SqlClient System.IO Microsoft.SqlServer.Management.Smo System.ServiceProcess System.Reflection
  • 6. Public Class DALHelper 'estas constantes poderiam ser obtidas de um arquivo de configuração externo 'para simplificar o código estou declarando-as como constantes no arquivo DALHelper Public Const strNomeBancoDados As String = "EscolaDB" Public Const strNomeTabela As String = "Alunos" Public Const strSQLCriaTabelaAlunos As String = "....ScriptsCriaTabelaAlunos.sql" Public Const strSQLCriaBancoDadosEscolaDB As String = "....ScriptsCriaEscolaBD.sql" Public Shared strConnString As String = "" 'verifica se o SQL Server esta em execução Public Shared Function verificaSeSQLServerNaoEstaRodando() As Boolean Dim servicoControle As New ServiceController("MSSQL$SQLEXPRESS") If servicoControle.Status <> ServiceControllerStatus.Running OrElse servicoControle.Status = ServiceControllerStatus.Stopped OrElse servicoControle.Status = ServiceControllerStatus.Paused Then servicoControle.Start() Return True End If Return False End Function Public Shared Function verificaSeBancoDadosExiste(ByVal strNomeBD As String) As Boolean 'Inclua referências a todas as .dll's que estão na pasta "Scripts" 'estes arquivos dll's estão na pasta C:Program FilesMicrosoft SQL Server100SDKAssemblies Dim dbServer As New Server(GetNomeSQLServer()) If dbServer.Databases(strNomeBD) IsNot Nothing Then Return True End If Return False End Function Private Shared Function GetNomeSQLServer() As String 'Nome do PC local Dim strPCname As String = Environment.MachineName ' nome do serviço do SQL Server Express Dim strInstancia As String = "MSSQL$SQLEXPRESS" Dim strNomeSQLServer As String = String.Empty ' Inclua uma referência a : System.ServiceProcess; Dim servicos As ServiceController() = ServiceController.GetServices() ' percorre os serviços For Each servico As ServiceController In servicos If servico Is Nothing Then Continue For End If Dim strNomeDoServico As String = servico.ServiceName If strNomeDoServico.Contains(strInstancia) Then strNomeSQLServer = strNomeDoServico End If Next Dim IndiceInicio As Integer = strNomeSQLServer.IndexOf("$") If IndiceInicio > -1 Then 'strSqlServerName=NomeDoSeuPCSQLEXPRESS; strNomeSQLServer = strPCname + "" + strNomeSQLServer.Substring(IndiceInicio + 1) End If Return strNomeSQLServer End Function Public Shared Sub CriaBancoDeDados(ByVal strNomeDB As String)
  • 7. Dim dbServidor As New Server(GetNomeSQLServer()) Dim mBancoDeDados As New Database(dbServidor, strNomeDB) 'cria o banco de dados mBancoDeDados.Create() End Sub Public Shared Function VerificaSeTabelaExiste(ByVal strNomeBD As String, ByVal strNomeTabela As String) As Boolean 'pega o nome do servidor e do banco de dados Dim dbServidor As New Server(GetNomeSQLServer()) Dim mBancoDeDados As Database = dbServidor.Databases(strNomeBD) ' percorre todas as tabelas do banco de dados For Each mTabela As Table In mBancoDeDados.Tables If mTabela.Name = strNomeTabela Then 'Achou a tabela no banco de dados Return True End If Next 'tabela não foi encontrada Return False End Function Public Shared Sub ExecutaScriptSQL_CriarTabelaAluno(ByVal strCaminhoArquivo As String) Dim asm As Assembly = Assembly.GetEntryAssembly() Dim diretorioAplicacao As String = Path.GetDirectoryName(asm.Location) Dim caminhoArquivo As String = Path.Combine(diretorioAplicacao, strCaminhoArquivo) Dim Arquivo As New FileInfo(caminhoArquivo) Dim strScript As String = Arquivo.OpenText().ReadToEnd() strScript = strScript.Replace("GO" & vbCr & vbLf, "") Using conn As New SqlConnection(MontaStringDeConexao()) conn.Open() Dim cmd As New SqlCommand(strScript, conn) Try cmd.ExecuteNonQuery() Catch excp As Exception Throw End Try End Using End Sub Private Shared Function MontaStringDeConexao() As String Dim strSqlServerNome As String = GetNomeSQLServer() Dim strConnString As String = "Data Source=" & strSqlServerNome & ";" & "Initial Catalog=" + DALHelper.strNomeBancoDados + ";Integrated Security=True" Return strConnString End Function End Class Nesta classe temos o seguinte: A declaração dos namespaces usados: Imports System Imports System.Data.SqlClient Imports System.IO Imports Microsoft.SqlServer.Management.Smo
  • 8. Imports System.ServiceProcess Imports System.Reflection A definição de constantes contendo o nome do banco de dados, da tabela e da localização dos scripts para criar o banco de dados e a tabela : Public Const strNomeBancoDados As String = "EscolaDB" Public Const strNomeTabela As String = "Alunos" Public Const strSQLCriaTabelaAlunos As String = "....ScriptsCriaTabelaAlunos.sql" Public Const strSQLCriaBancoDadosEscolaDB As String = "....ScriptsCriaEscolaBD.sql" Public Shared strConnString As String = "" Os métodos: verificaSeSQLServerNaoEstaRodando verificaSeBancoDadosExiste GetNomeSQLServer CriaBancoDeDados VerificaSeTabelaExiste ExecutaScriptSQL_CriarTabelaAluno MontaStringDeConexao Todos os métodos são estáticos (Shared) e assim não precisaremos criar uma instância da classe DALHelper para usá-los. Agora já podemos usar a classe e os scripts criados. Selecione o formulário form1.vb e no evento Load do formulário digite o código abaixo: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load verificaBancoDeDados_Tabela() End Sub A rotina verificaBancoDeDados_Tabela possui o seguinte código: Private Sub verificaBancoDeDados_Tabela() 'verifica se o SQL Server esta em execução If DALHelper.verificaSeSQLServerNaoEstaRodando() Then MessageBox.Show("O SQLServer não esta em execução. Pode estar parado ou pausado.", "Verifica SQLServer", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("O SQL Server esta instalado e em execução.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) End If 'se o banco de dados não existir roda o script para criar o banco de dados
  • 9. 'se a tabela não existir roda o script para crir a tabela If DALHelper.verificaSeBancoDadosExiste(DALHelper.strNomeBancoDados) = False Then DALHelper.CriaBancoDeDados(DALHelper.strNomeBancoDados) MessageBox.Show("O banco de dados : " + DALHelper.strNomeBancoDados + " foi criado no SQLServer com sucesso.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) If DALHelper.VerificaSeTabelaExiste(DALHelper.strNomeBancoDados, DALHelper.strNomeTabela) = False Then DALHelper.ExecutaScriptSQL_CriarTabelaAluno(DALHelper.strSQLCriaTabelaAlunos) MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " foi criada no SQLServer com sucesso.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Else MessageBox.Show("O Banco de dados : " + DALHelper.strNomeBancoDados + " já existe no SQL Server.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) End If ' se o banco de dados existir e a tabela não existir - roda o script para criar a tabela e sai If (DALHelper.verificaSeBancoDadosExiste(DALHelper.strNomeBancoDados) = True) AndAlso (DALHelper.VerificaSeTabelaExiste(DALHelper.strNomeBancoDados, DALHelper.strNomeTabela) = False) Then DALHelper.ExecutaScriptSQL_CriarTabelaAluno(DALHelper.strSQLCriaTabelaAlunos) MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " foi criada com sucesso no SQLServer", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("A tabela : " + DALHelper.strNomeTabela + " já existe no Banco de dados.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub O código acima usa os métodos da classe DALHelper para executar as operações definidas. Executando a aplicação e usando a ferramenta SQL Server Management Studio para verificação iremos ver o banco de dados EscolaDB e a tabela Alunos criados conforme esperávamos conforme a figura abaixo:
  • 10. Pegue o projeto completo aqui: CriaSQLServerNet.zip Joã 14:1 Não se turbe o vosso coração; credes em Deus, crede também em mim. Joã 14:2 Na casa de meu Pai há muitas moradas; se não fosse assim, eu vo-lo teria dito; vou preparar-vos lugar. Joã 14:3 E, se eu for e vos preparar lugar, virei outra vez, e vos tomarei para mim mesmo, para que onde eu estiver estejais vós também. Joã 14:4 E para onde eu vou vós conheceis o caminho. Joã 14:5 Disse-lhe Tomé: Senhor, não sabemos para onde vais; e como podemos saber o caminho? Joã 14:6 Respondeu-lhe Jesus: Eu sou o caminho, e a verdade, e a vida; ninguém vem ao Pai, senão por mim.