CONEXAO COM BD SQL SERVER
Amigos,
Bom dia,
Estou com uma dúvida e preciso da ajuda de vocês para esclarecê-la.
Para conectar ao banco de dados Sql Server eu utilizo o seguinte código:
Dim CN_ProcBanco2 As New ADODB.Connection
Dim rsSelecaoBancoProcBanco2 As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco2 As New ADODB.Command
CN_ProcBanco2.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco2.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco2.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_ProcBanco2.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco2.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco2.Open [ô] Abrindo a conexão
Set rsSelecaoBancoProcBanco2 = New ADODB.Recordset
Set rsSelecaoBancoProcBanco2.ActiveConnection = CN_ProcBanco2
O código acima funciona perfeitamente, porém, eu preciso de uma maneira de não precisar criar uma conexão para cada ação no sistema (Salvar, editar, excluir, incluir, etc, etc).
Por exemplo:
Para a rotina salvar eu crio o código acima, modificando as variáveis:
CN_ProcBanco2 para CN_Salvar
rsSelecaoBancoProcBanco2 para rsSelecaoBanco_Salvar
cnnComandoBanco_ProcBanco2 para cnnComandoBanco_Salvar
Para a rotina Editar eu crio o código acima, modificando as variáveis:
CN_ProcBanco2 para CN_Editar
rsSelecaoBancoProcBanco2 para rsSelecaoBanco_Editar
cnnComandoBanco_ProcBanco2 para cnnComandoBanco_Editar
Preciso de ajuda para arrumar uma maneira de automatizar essa rotina, pois meu código está ficando muito carregado e uma bagunça.
Ja pensei em criar uma função, mais ai encontro um problema:
Dim CN_ProcBanco3 As New ADODB.Connection
Dim rsSelecaoBancoProcBanco3 As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco3 As New ADODB.Command
CN_ProcBanco3.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco3.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco3.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_ProcBanco3.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco3.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco3.Open [ô] Abrindo a conexão
Set rsSelecaoBancoProcBanco3 = New ADODB.Recordset
Set rsSelecaoBancoProcBanco3.ActiveConnection = CN_ProcBanco3
rsSelecaoBancoProcBanco3.Open [Ô]Select * from Banco[Ô]
Set msfrprocbanco.DataSource = rsSelecaoBancoProcBanco3
O problema é que a parte abaixo não faz parte de uma regra geral e sim de uma ação especÃfica:
rsSelecaoBancoProcBanco3.Open [Ô]Select * from Banco[Ô]
Set msfrprocbanco.DataSource = rsSelecaoBancoProcBanco3
Vocês que são mais experientes no assunto, poderiam me auxiliar?
Antecipadamente agradeço a ajuda de todos.
Bom dia,
Estou com uma dúvida e preciso da ajuda de vocês para esclarecê-la.
Para conectar ao banco de dados Sql Server eu utilizo o seguinte código:
Dim CN_ProcBanco2 As New ADODB.Connection
Dim rsSelecaoBancoProcBanco2 As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco2 As New ADODB.Command
CN_ProcBanco2.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco2.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco2.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_ProcBanco2.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco2.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco2.Open [ô] Abrindo a conexão
Set rsSelecaoBancoProcBanco2 = New ADODB.Recordset
Set rsSelecaoBancoProcBanco2.ActiveConnection = CN_ProcBanco2
O código acima funciona perfeitamente, porém, eu preciso de uma maneira de não precisar criar uma conexão para cada ação no sistema (Salvar, editar, excluir, incluir, etc, etc).
Por exemplo:
Para a rotina salvar eu crio o código acima, modificando as variáveis:
CN_ProcBanco2 para CN_Salvar
rsSelecaoBancoProcBanco2 para rsSelecaoBanco_Salvar
cnnComandoBanco_ProcBanco2 para cnnComandoBanco_Salvar
Para a rotina Editar eu crio o código acima, modificando as variáveis:
CN_ProcBanco2 para CN_Editar
rsSelecaoBancoProcBanco2 para rsSelecaoBanco_Editar
cnnComandoBanco_ProcBanco2 para cnnComandoBanco_Editar
Preciso de ajuda para arrumar uma maneira de automatizar essa rotina, pois meu código está ficando muito carregado e uma bagunça.
Ja pensei em criar uma função, mais ai encontro um problema:
Dim CN_ProcBanco3 As New ADODB.Connection
Dim rsSelecaoBancoProcBanco3 As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco3 As New ADODB.Command
CN_ProcBanco3.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco3.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco3.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_ProcBanco3.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco3.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco3.Open [ô] Abrindo a conexão
Set rsSelecaoBancoProcBanco3 = New ADODB.Recordset
Set rsSelecaoBancoProcBanco3.ActiveConnection = CN_ProcBanco3
rsSelecaoBancoProcBanco3.Open [Ô]Select * from Banco[Ô]
Set msfrprocbanco.DataSource = rsSelecaoBancoProcBanco3
O problema é que a parte abaixo não faz parte de uma regra geral e sim de uma ação especÃfica:
rsSelecaoBancoProcBanco3.Open [Ô]Select * from Banco[Ô]
Set msfrprocbanco.DataSource = rsSelecaoBancoProcBanco3
Vocês que são mais experientes no assunto, poderiam me auxiliar?
Antecipadamente agradeço a ajuda de todos.
Uma das que tem que fazer é manter o Banco de Dados aberto o tempo todo.Carrega ele
no load do form.Só fecha quando finalizar o programa.
Toda ação que fizer como apenas leitura feche a Tabela.Close e nothing.
Ai pode usar a mesma variável para outras coisas
Para movimentação de registro,ai sim usa outra variável.
Nem todos usam está forma,devido ao grande números de registros caso houver.
no load do form.Só fecha quando finalizar o programa.
Toda ação que fizer como apenas leitura feche a Tabela.Close e nothing.
Ai pode usar a mesma variável para outras coisas
Para movimentação de registro,ai sim usa outra variável.
Nem todos usam está forma,devido ao grande números de registros caso houver.
olha, eu mesmo uso 2 tipos de códigos, este é um deles, e depois a cada tarefa eu chamo ele e o resto por conta dele: Imports System.Data.SqlClient
Imports System.Windows.Forms
Public Class cldBancoDados
Dim StringConexao As String = [Ô]Server=.;Database=nomedadatabase;user id=usuario;pwd=senha[Ô]
Private Function AbreBanco() As SqlConnection
Dim Conn As New SqlConnection
With Conn
.ConnectionString = StringConexao
.Open()
End With
Return Conn
End Function
Private Sub FechaBanco(ByVal Conn As SqlConnection)
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
End Sub
Public Sub ExecutaComando(ByVal strQuery As String)
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
.ExecuteNonQuery()
End With
Catch ex As Exception
Throw ex
Finally
End Try
End Sub
Public Function RetornaDataSet(ByVal strQuery As String) As DataSet
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
End With
Dim daAdaptador As New SqlDataAdapter
Dim dsDataSet As New DataSet
daAdaptador.SelectCommand = cmdComando
daAdaptador.Fill(dsDataSet)
Return dsDataSet
Catch ex As Exception
Throw New Exception([Ô]Erro na camada 3:[Ô] & ex.Message)
Finally
FechaBanco(Conn)
End Try
End Function
Public Function RetornaDataReader(ByVal strQuery As String) As SqlDataReader
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
End With
Return cmdComando.ExecuteReader
Catch ex As Exception
Throw ex
End Try
End Function
End Class
onde estiver escrito nome da database, vc digita o nome do banco de dados q vc salvou, onde esta escrito usuario e senha, vc digita o o login quando vc abre o script do SQL, faça o teste de conexão com alguma tabela no seu sistema e me confirme se aparece o mesmo erro... Me confirme se a lógica da sua conexão é a mesma da minha... se for, eu posto o outro código q provavelmente vai te ajudar...
Imports System.Windows.Forms
Public Class cldBancoDados
Dim StringConexao As String = [Ô]Server=.;Database=nomedadatabase;user id=usuario;pwd=senha[Ô]
Private Function AbreBanco() As SqlConnection
Dim Conn As New SqlConnection
With Conn
.ConnectionString = StringConexao
.Open()
End With
Return Conn
End Function
Private Sub FechaBanco(ByVal Conn As SqlConnection)
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
End Sub
Public Sub ExecutaComando(ByVal strQuery As String)
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
.ExecuteNonQuery()
End With
Catch ex As Exception
Throw ex
Finally
End Try
End Sub
Public Function RetornaDataSet(ByVal strQuery As String) As DataSet
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
End With
Dim daAdaptador As New SqlDataAdapter
Dim dsDataSet As New DataSet
daAdaptador.SelectCommand = cmdComando
daAdaptador.Fill(dsDataSet)
Return dsDataSet
Catch ex As Exception
Throw New Exception([Ô]Erro na camada 3:[Ô] & ex.Message)
Finally
FechaBanco(Conn)
End Try
End Function
Public Function RetornaDataReader(ByVal strQuery As String) As SqlDataReader
Dim Conn As New SqlConnection
Try
Conn = AbreBanco()
Dim cmdComando As New SqlCommand
With cmdComando
.CommandText = strQuery
.CommandType = CommandType.Text
.Connection = Conn
End With
Return cmdComando.ExecuteReader
Catch ex As Exception
Throw ex
End Try
End Function
End Class
onde estiver escrito nome da database, vc digita o nome do banco de dados q vc salvou, onde esta escrito usuario e senha, vc digita o o login quando vc abre o script do SQL, faça o teste de conexão com alguma tabela no seu sistema e me confirme se aparece o mesmo erro... Me confirme se a lógica da sua conexão é a mesma da minha... se for, eu posto o outro código q provavelmente vai te ajudar...
Mouser,você tem que responder de acordo a pergunta e o programa.
Existe diferença e grande,pois este código não consegue fazer nada.
Vb6 diferente Vbnet
Existe diferença e grande,pois este código não consegue fazer nada.
Vb6 diferente Vbnet
Faça seu login para responder