Ir para o conteúdo
malainhocf

[Resolvido] SQL Server no VB.NET

Mensagens Recomendadas

malainhocf    2
malainhocf

Olá Pessoal, boa tarde,

Eu estou a estudar VB.NET e em relação a banco de dados com vb.net estou praticamente a zero.

O que eu soube fazer até agora foi

- Criar um novo projecto

- Abri Database Explorer

- Escolhi a opção ADD CONNECTION clicando no botão direito do rato

- Escolhi um arquivo do SQL SERVER

- Cliquei no OK

Depois escolhi Data Sources

- Cliquei em Add New Data Source

- Depois escolhi Database e cliquei em ENTER

- Escolhi o meu data connection (que é a minha base de dados)

- Depois cliquei em Sim para copiar a base de dados para o projecto

- Depois desceleccionei a opção para não guardar a connectionstring e cliquei em Next

- Depois Seleccionei TABLES e escrevi o nome do data set e cliquei em Next

- Por fim cliquei em FINISH

Com isso fico com a conecção feita, isto é, conecção com a base de dados e depois também o dataset

Isso é uma forma de fazer.

Mas existe uma forma diferente de fazer isso certo ?

Existe uma forma de fazer isso em código.

Aguardo por maiores esclarecimentos.

Cumprimentos

César Oliveira

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
malainhocf    2
malainhocf

Gostei muito dos artigos do teu blog

A primeira parte entendi tudo

Em relação à segunda tenho uma questão:

Como eu faço para pegar nessa selecção de dados e meter isso dentro de um datagrideview ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Gostei muito dos artigos do teu blog

A primeira parte entendi tudo

Em relação à segunda tenho uma questão:

Como eu faço para pegar nessa selecção de dados e meter isso dentro de um datagrideview ?

Obrigado!

Para carregar os dados numa datagridview também tenho lá alguma coisa:

Utilizando o controlo DataGridView

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
malainhocf    2
malainhocf

Entendi tudo muito bem

Se eu fizer uma movimentação no banco de dados fora do datagrideview como faço para actualizar os dados que estão dentro da datagrideview ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Weasel    3
Weasel

Eu não percebo (gosto) nada dessas cenas :D

Sou também programador PHP (usava bastante Mysql) e o hábito é uma coisa difícil de perder :D

Por exemplo eu uso PostgreSQL (Open Source e Grátis), e uso o npgsql.dll desenvolvido por uma equipa ligada o Postgresql.

Depois é só:

Imports Npgsql

Dim con_str As String = "SERVER=" & My.Settings.server & ";DATABASE=" & My.Settings.database & ";USER ID=utilizador;PASSWORD=password;"

Public Class main

Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim conn As New NpgsqlConnection(con_str)

conn.Open()

Dim command As New NpgsqlCommand("SELECT * FROM tabela", conn)
Dim dr As Npgsql.NpgsqlDataReader

dr = command.ExecuteReader()

DataGridView1.Rows.Clear()

While dr.Read()
  Me.DataGridView1.Rows.Add(dr.Item("campo1"), dr.Item("campo2"), dr.Item("campo3"), dr.Item("campo4"), dr.Item("campo5"))
End While

conn.Close()

conn = Nothing
command = Nothing
dr = Nothing

End Sub

End Class

Simples e directo, sempre através de código.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Weasel    3
Weasel

disto: sqldataadapter.Update(dataset)

Datasets data's não sei das quantas...

O método que uso é puro SQL (muito semelhante ao uso em PHP), ligas á base de dados, executas a query, está feito.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Mas o DataSet é muito mais importante do que pensas, e continua a ser puro código,  nada de wizards. Eu nunca uso wizards!

Vê este exemplo:

Imports System.Data.SqlClient
    
' Declaração de variáveis privadas
Private da As SqlDataAdapter
Private ds As DataSet
    
    
' No Form Load vamos colocar a informação para actualizar a DataGridView
Private Sub DataGridViewExample_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


    ' Texto de ligação à base de dados
    Dim myConnectionString As String = _
                    "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\myDatabase.mdf';" & _
                    "Integrated Security=True;User Instance=True"
    
    ' Cria uma nova ligação à base de dados
    Dim connection As New SqlConnection(myConnectionString)
    
    ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet
    Dim SQL As String = "SELECT * FROM myTable"
    da = New SqlDataAdapter(SQL, connection)
    
    ' Cria um novo DataSet, ou seja, uma representação em memória da informação
    ds = New DataSet
    
    ' Coloca a informação da tabela definida no DataSet
    da.Fill(ds, "myTable")
    
    ' Define que a fonte de dados da DataGridView é a nossa DataSet
    ' criando automáticamente as colunas e linhas de dados
    Me.DataGridView1.DataSource = ds.Tables("myTable")
    
    ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
    ' porque esta não foi aberta através do comando .Open()
    connection = Nothing

  End Sub

Se retirares os comentários são meia-duzia de linhas. Depois, para gravares as alterações na base de dados só precisas de duas linhas:

    ' Cria automáticamente o comando para permite actualizar a DataSet
    Dim cb As New SqlCommandBuilder(da)
    
    ' Actualiza na DataSet, e por sua vez na tabela, as alterações efectadas
    da.Update(ds, "myTable")

Não precisas de adicionar colunas, colocar os dados linha a linha, saber que dados foram alterados, etc, etc.

Nada mais simples e prático!  :biggrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
malainhocf    2
malainhocf

Ok, tenho que actualizar o data adapter

E a datagrideview não tem que ser refrescada ? Tipo assim

datagrideview1.refresh()

Preciso de actualizar também a datagrideview ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
malainhocf    2
malainhocf

O meu experimento é o seguinte

---------------------------------------------------------------------

Imports System.Data.SqlClient

Public Class frmagenda
    ' Declaração de variáveis privadas
    Private da As SqlDataAdapter
    Private ds As DataSet

    Private Sub frmagenda_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\agenda.mdf';" & _
        ";Integrated Security=True;User Instance=True"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet
        Dim SQL As String = "SELECT * FROM paises"
        da = New SqlDataAdapter(SQL, connection)

        ' Cria um novo DataSet, ou seja, uma representação em memória da informação
        ds = New DataSet

        ' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "paises")

        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.dgv1.DataSource = ds.Tables("paises")

        ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
        ' porque esta não foi aberta através do comando .Open()
        connection = Nothing
    End Sub

    Private Sub btninserir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btninserir.Click
        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\agenda.mdf';" & _
        ";Integrated Security=True;User Instance=True"

        ' Comando que irá inserir dados na tabela paises em que os campos
        ' idpais e pais são passados através de parâmetros

        Dim SQL As String = "INSERT INTO paises([idpais], [pais]) VALUES (@idpais, @pais);"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        ' Criação do comando indicando a instrução e a ligação
        Dim command As New SqlCommand(SQL, connection)

        ' Indicação dos parâmetros que serão inseridos
        command.Parameters.Add("@idpais", SqlDbType.Int).Value = "3"
        command.Parameters.Add("@pais", SqlDbType.VarChar).Value = "Franca"

        ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos
        connection.Open()

        da.Update(ds)

        dgv1.Refresh()

        Dim x As Integer = command.ExecuteNonQuery()

        If x < 1 Then
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        command = Nothing


    End Sub

    Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
            "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\agenda.mdf';" & _
            ";Integrated Security=True;User Instance=True"

        ' Comando que irá actualizar os dados na tabela "paises" em que os campos
        ' "idpais" e "pais" são passados através de parâmetros
        Dim SQL As String = "UPDATE paises SET [pais] = @pais WHERE [idpais] = @idpais"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)

        ' Criação do comando indicando a instrução e a ligação
        Dim command As New SqlCommand(SQL, connection)

        ' Indicação dos parâmetros que serão actualizados
        command.Parameters.Add("@pais", SqlDbType.VarChar).Value = "Alemanha"
        command.Parameters.Add("@idpais", SqlDbType.Int).Value = 3

        ' Abre a ligação, executa o comando e guarda em "x" o número de registos actualizados
        connection.Open()

        Dim x As Integer = command.ExecuteNonQuery()

        If x < 1 Then
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub

    Private Sub btnapagar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnapagar.Click
        Dim myConnectionString As String = _
            "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\agenda.mdf';" & _
            ";Integrated Security=True;User Instance=True"

        Dim SQL As String = "DELETE FROM paises WHERE [idpais] = @idpais"

        Dim connection As New SqlConnection(myConnectionString)

        Dim command As New SqlCommand(SQL, connection)

        command.Parameters.Add("@idpais", SqlDbType.Int).Value = 3

        connection.Open()

        Dim x As Integer = command.ExecuteNonQuery()
        If x < 1 Then
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        End If

        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub
End Class

---------------------------------------------------------------------

EDIT: Adicionado GeShi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Por falta de informação do utilizador e por existirem respostas aceitáveis à pergunta efectuada, esta questão foi marcada como resolvida.

Jorge Paulino

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade