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

bioshock

SQL StartupPath

16 mensagens neste tópico

Boas, estou com um problema em adicionar o que escrevo nas Textboxs Username e Password à minha Base de Dados SQL.

Gostaria que o programa na ConnectionString fosse buscar o ficheiro à pasta debug, mas dá-me erro.

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

        ' Comando que irá inserir dados na tabela "utilizadores" em que os campos
        ' "username" e "password" são passados através de parâmetros
        Dim SQL As String = "INSERT INTO utilizadores([username], [password]) VALUES (@username, @password);"

        ' 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("@username", SqlDbType.NVarChar).Value = Username.Text
        command.Parameters.Add("@password", SqlDbType.NVarChar).Value = Password.Text

        ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos
        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

Este exemplo foi retirado do Blog do JPaulino http://vbtuga.blogspot.com/2008/04/vbnet-gesto-de-dados-em-sql-server.html

Eu penso que o erro apenas está no Application.StartupPath.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim deve dar.

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

        ' Comando que irá inserir dados na tabela "utilizadores" em que os campos
        ' "username" e "password" são passados através de parâmetros
        Dim SQL As String = "INSERT INTO utilizadores([username], [password]) VALUES (@username, @password);"

        ' 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("@username", SqlDbType.NVarChar).Value = Username.Text
        command.Parameters.Add("@password", SqlDbType.NVarChar).Value = Password.Text

        ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos
        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

Já agora, para a próxima coloca o erro que te dá :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continua a dar erro, desculpa por não ter posto o erro, é o seguinte:

Dim connection As New SqlConnection(myConnectionString)

"Format of the initialization string does not conform to specification starting at index 24."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que já sei, falta-te a pelica no final do caminho.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que isso ficou resolvido, Obrigado. No entanto, deu-me outro erro :\

connection.Open()

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De certeza que tens o SQL Server Express a correr correctamente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou agora a testar isso, fui ao google e encontrei algumas coisas para testar, já te digo algo. Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já encontrei o meu problema, mas agora não sei como resolve-lo.

O Problema está no Startup.

Caso eu ponha o caminho todo direitinho, ou seja:

 Dim myConnectionString As String = _
"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\Owner\My Documents\LoginTeste.mdf';" & _
";Integrated Security=True;User Instance=True"

     

Já funciona correctamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz isto

MessageBox.show(myConnectionString)

E verifica se os caminhos estão iguais. O mais provável é que não, porque a BD não deve estar "ao lado da aplicação".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pus esse código no botão de entrar do form Login.

Caso eu tenha o código Startup ele dá o mesmo problema.

Caso eu tenha o código com o caminho todo, aí ele aparece o caminho da connection string.

Era isto que pretendias ou era por o código noutro lado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era para colocares na linha imediatamente a seguir à declaração da variável.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
                "Data Source=.SQLEXPRESS;AttachDbFilename='" & Application.StartupPath & "\LoginTeste.mdf';" & _
                ";Integrated Security=True;User Instance=True"
        MessageBox.show(myConnectionString)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu digo que não.

Então se tu dizes que ela está aqui: "C:Documents and SettingsOwnerMy DocumentsLoginTeste.mdf", como podes dizer que o esse caminho está correcto?

O problema é que este caminho não é relativo à aplicação. Uma solução por a BD a ser copiada com o programa, de maneira a ficar "ao lado", e assim puderes utilizar o Application.Startup

Já agora tens dois ; embora isso não interfira

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou experimentar fazer de outra forma, já te digo algo.

Obrigado pela tua ajuda e paciência :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É assim, eu criei um novo projecto para testes.

Nesse projecto, quando criei a minha BD SQL, pus logo o caminho no Debug da pasta "Testes".

Mas, mesmo que utilize aquele comando que me deste, o problema persiste.

        Dim myConnectionString As String = _
                "Data Source=.SQLEXPRESS;AttachDbFilename='" & Application.StartupPath & "\just.mdf';" & _
                ";Integrated Security=True;User Instance=True"

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