Jump to content

[Resolvido] Vb e base de dados


s4muc4
 Share

Recommended Posts

boas e a primeira vez que trabalho com base de dados dentro do vb e nao sei muito bem como trabalhar com isso.

a forma que eu estou a usar e aproveitado do livro "programaçao visual basic 2010" e adaptei-o conforme a minha necessidade e deu-me nisto

If UtilizadorIntTableAdapter.GetUserData(Database1DataSet.UtilizadorInt.UtilizadorColumn) = txtUsername.Text And _

UtilizadorIntTableAdapter.GetUserData(Database1DataSet.UtilizadorInt.PasswordColumn) = txtPassword.Text Then

MessageBox.Show("Accesso Autorizado!")

Else

MessageBox.Show("Accesso Negado!")

End If

so que na parte sublinhada da me um erro "Value of type 'System.Data.DataColumn' cannot be converted to 'Integer'" e eu nao quero que ele converta para integer mas que fique em string

agradecia qualquer tipo de ajuda, nem que seja um site que m deia explicaçoes mas simples 😛

Link to comment
Share on other sites

Espero que isto te ajude 🙂

Dim username as String

Dim password As String
username = TextBox1.Text
password = TextBox2.Text
Dim sql As String = "Select * from Utilizador where login='" & username & "' and password ='" & password & "'"
Dim sqlcom As New OleDbCommand(sql, con)
Dim dt As New DataTable
dt.Load(sqlcom.ExecuteReader())
If dt.Rows.Count = 0 Then
MsgBox("Utilizador ou palavra-chave incorrectos. Por favor volte a tentar.", vbCritical, "ERRO")
TextBox1.Text = ""
TextBox2.Text = ""
Else
MsgBox("Olá, seja Bem Vindo" & " " & username & " ", 64, "Bem Vindo")

Timer1.Start()
End If
Dim dr As OleDbDataReader = sqlcom.ExecuteReader
con.Close()

Se usares SQL tens que mudar os "OleDb" para "Sql"

E antes da Public Class 'nome da form' tens que por

Imports System.Data.OleDb

ou

Imports System.Data.SqlClient

Edited by hypz
Link to comment
Share on other sites

Con é a conexão, isso depende do nome que lhe deres.

Dim provider As String
       provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=?:\ Diretório\basedados.accdb; persist security info = false;"
       Dim con As New OleDbConnection(provider)

Daqui vem o con, a minha como é em access leva o OLEDB. Mas em SQL só tens que trocar a conexão.

O timer não é preciso pores, eu é que copiei o meu código e nem tirei isso. Serve para usares na progressbar que é o meu caso.

De resto está tudo entendido ? 🙂

Link to comment
Share on other sites

eu fiz o codigo conforme algumas coisas que eu ja tinha encontrado, mas ele diz me k nao encontra a tabela utilizadorint, k e como eu tenho na base de dados


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim username As String
       Dim password As String
       username = TxtUsername.Text
       password = TxtPassword.Text

       Dim sql As String = "Select Utilizador,Password from [utilizadores Internos] where login='" & username & "' and password ='" & password & "'"

       Dim provider As String
       provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\JUSTBIT.accdb; persist security info = false;"

       Dim con As New OleDbConnection(provider)
       Dim sqlcom As New OleDbCommand(sql, con)
       Dim dt As New DataTable
       con.Open()
       dt.Load(sqlcom.ExecuteReader())
       If dt.Rows.Count = 0 Then
           MsgBox("Utilizador ou palavra-chave incorrectos. Por favor volte a tentar.", vbCritical, "ERRO")
           TxtUsername.Text = ""
           TxtPassword.Text = ""
       Else
           MsgBox("Olá, seja Bem Vindo " & username & ".", 64, "Bem Vindo")

           'Timer1.Start()
       End If
       Dim dr As OleDbDataReader = sqlcom.ExecuteReader
       con.Close()
   End Sub

ps, esqueces t t d fazer con.open()

Edited by s4muc4
Link to comment
Share on other sites

Acho mais fácil fazeres assim a query..

"Select * from [utilizador Internos] where login='" & username & "' and password ='" & password & "'"

Como a tua tabela tem espaço no nome não sei se é entre [ ] ou não.

Link to comment
Share on other sites

pois esse problema ja foi ultrapassado, o meu problema agora e q ele da m erro no dt.Load(sqlcom.ExecuteReader()), por causa do execute reader


Private Sub BtnEntrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEntrar.Click
	Dim username As String
	Dim password As String
	username = TxtUsername.Text
	password = TxtPassword.Text

	Dim sql As String = "Select Utilizador,Password from UtilizadoresInternos where login='" & username & "' and password ='" & password & "'"

	Dim provider As String
	provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\bin\JUSTBIT.accdb; persist security info = false;"

	Dim con As New OleDbConnection(provider)
	Dim sqlcom As New OleDbCommand(sql, con)
	Dim dt As New DataTable
	con.Open()
	dt.Load(sqlcom.ExecuteReader())
	If dt.Rows.Count = 0 Then
		MsgBox("Utilizador ou palavra-chave incorrectos. Por favor volte a tentar.", vbCritical, "ERRO")
		TxtUsername.Text = ""
		TxtPassword.Text = ""
	Else
		MsgBox("Olá, seja Bem Vindo " & username & ".", 64, "Bem Vindo")
	End If
	Dim dr As OleDbDataReader = sqlcom.ExecuteReader
	con.Close()
End Sub
Edited by s4muc4
Link to comment
Share on other sites

Eu costumo fazer isto antes da query para que não haja confusão nem problemas.

Dim provider As String
provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\bin\JUSTBIT.accdb; persist security info = false;
Dim con As New OleDbConnection(provider)
con.open

Provavelmente o erro esta aí.. Experimenta assim .

Dim provider As String
provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\bin\JUSTBIT.accdb; persist security info = false;"
Dim con As New OleDbConnection(provider)
con.Open()

Dim username As String
Dim password As String
username = TxtUsername.Text
password = TxtPassword.Text

Dim sql As String = "Select Utilizador,Password from UtilizadoresInternos where login='" & username & "' and password ='" & password & "'"


Dim sqlcom As New OleDbCommand(sql, con)
Dim dt As New DataTable
dt.Load(sqlcom.ExecuteReader())
If dt.Rows.Count = 0 Then
MsgBox("Utilizador ou palavra-chave incorrectos. Por favor volte a tentar.", vbCritical, "ERRO")
TxtUsername.Text = ""
TxtPassword.Text = ""
Else
MsgBox("Olá, seja Bem Vindo " & username & ".", 64, "Bem Vindo")
End If
Dim dr As OleDbDataReader = sqlcom.ExecuteReader
con.Close()
End Sub
Edited by hypz
Link to comment
Share on other sites

Eu ñ sei como se faz com [ ](Espaços) na tabela.

Dim sql As String = "Select from UtilizadoresInternos where Utilizador='" & username & "' and Password ='" & password & "'"

Tenta Assim.

Edited by hypz
Link to comment
Share on other sites

pois isso ja esta resolvido e esta como tu puseste mas ele da me erro no execute reader quando eu faço f11, ele quando chega a essa parte ele diz m "Não foi fornecido nenhum valor para um ou mais parâmetros necessários."

Link to comment
Share on other sites

Ou a tabela está a ser mal chamada, como já te disse, como tens espaços não tenho a certeza ou então os campos não são os mesmos..

sim e na altura dava me erro no path da base de dados e da tabela

eu agora tenho assim

Private Sub BtnEntrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEntrar.Click
               Dim username As String
               Dim password As String
               username = TxtUsername.Text
               password = TxtPassword.Text

               Dim sql As String = "Select Utilizador,Password from UtilizadoresInternos where login='" & username & "' and password ='" & password & "'"

               Dim provider As String
               provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Documents\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\bin\JUSTBIT.accdb; persist security info = false;"

               Dim con As New OleDbConnection(provider)
               Dim sqlcom As New OleDbCommand(sql, con)
               Dim dt As New DataTable
               con.Open()
               dt.Load(sqlcom.ExecuteReader())
               If dt.Rows.Count = 0 Then
                       MsgBox("Utilizador ou palavra-chave incorrectos. Por favor volte a tentar.", vbCritical, "ERRO")
                       TxtUsername.Text = ""
                       TxtPassword.Text = ""
               Else
                       MsgBox("Olá, seja Bem Vindo " & username & ".", 64, "Bem Vindo")
               End If
               Dim dr As OleDbDataReader = sqlcom.ExecuteReader
               con.Close()
       End Sub
Link to comment
Share on other sites

eu peço imensa desculpa a todos pela minha estupides e casmurrice, porque andava sempre confuso por causa de outro topico k tinha a resposta toda e eu nao a via. enfim, ao fim de muita recapitulacao e reflexao consegui fazer isto dar certo, mas agora o problema e k eu ao meter os dados de utilizador, ele no fim mostra m a mensagem de acesso negado

codigo

Imports System.Data.OleDb
Imports System.IO

Public Class Form1
Dim conn As New OleDbConnection()
Dim cmd As New OleDbCommand()
Dim da As New OleDbDataAdapter()
Dim ds As New DataSet()
Dim cb As New OleDbCommandBuilder()

Private Sub BtnEntrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEntrar.Click
 Dim provider As String
 provider = "provider = Microsoft.ACE.OLEDB.12.0;Data Source=Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Geraldo\Os meus documentos\Visual Studio 2010\Projects\WindowsApplication2\WindowsApplication2\bin\JUSTBIT.accdb; persist security info = false;"
 Try
	 conn = New OleDbConnection(provider)
	 cmd = New OleDbCommand("SELECT * FROM UtilizadoresInternos WHERE Utilizador=@user AND Password=@pass", conn)
	 cmd.Parameters.AddWithValue("@user", TxtUsername.Text)
	 cmd.Parameters.AddWithValue("@pass", TxtPassword.Text)
	 da = New OleDbDataAdapter(cmd)
	 ds = New DataSet()
	 With conn
		 If .State = ConnectionState.Closed Then 'se tiver fechado
			 .Open() 'abrimos a conexao
		 End If
	 End With
	 da.Fill(ds, "consulta")
	 cb = New OleDbCommandBuilder(da)
 Catch ex As Exception
	 MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
 End Try
 If ds.Tables("Consulta").Rows.Count() = 0 Then
	 MsgBox("Dados incorretos", MsgBoxStyle.Critical)
 End If
 If ds.Tables("Consulta").Rows.Count() > 1 Then
	 MsgBox("Accesso Cedido!")
 Else
	 MsgBox("Accesso Negado!")
 End If
End Sub
End Class
Edited by s4muc4
Link to comment
Share on other sites

boas

altera o if seguinte estás a mostrar a msg acesso cedido só quando tiveres mais que um registo e em condições normais só vais ter «um» ou «nenhum» registo.

  If ds.Tables("Consulta").Rows.Count() = 0 Then
	 MsgBox("Dados incorretos", MsgBoxStyle.Critical)
else
	 MsgBox("Accesso Cedido!")
 End If

cumps

acao

Link to comment
Share on other sites

LINDO, funciona as mil maravilhas.

muito obrigado a todos

ja agora, como e que eu posso fazer com k ele seja sensivel a maiusculas e minusculas?

e tambem, ele depois de abrir um segundo form, quando eu carrego no x de fechar, ele nao fexa o programa por completo. como e k eu posso reolver isso?

Edited by s4muc4
Link to comment
Share on other sites

bem, nao era bem isso o que eu tinha em mente mas tm posso usar isso

o que eu kero dizer e, por exemplo, digamos k na base de dados tenho "user", se eu na textbox meter "USER" ele aceita na mesma.

como e k eu posso evitar isso??

ja agora, obrigado pelo .dispose

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.