• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

malainhocf

[Resolvido] SQL Server no VB.NET

16 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atenção: não testado, mas tens de actualizar o dataadapter, mais ou menos isto:

sqldataadapter.Update(dataset)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Jorge Paulino

0

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