Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiagoborges.net

[Resolvido] Diferentes conexões e consultas, qual a melhor?

Recommended Posts

Qual a diferença entre esta conexão e consulta:

 

Dim vConexao
 Set vConexao = Server.CreateObject("ADODB.Connection")
  vConexao.Open "DBQ="& request.ServerVariables("APPL_PHYSICAL_PATH") &"..\banco\baseSqltbNET.mdb;Driver={Driver do Microsoft Access (*.mdb)};"
   Set vRs = Server.CreateObject("ADODB.Recordset")
	vRs.Open "SELECT * FROM tbContador",vConexao,3,3
	 vRs.AddNew
	  vRs("txIp") = Request.ServerVariables("REMOTE_ADDR")
	  vRs("dhAcesso") = now
	 vRs.UpDate
	 vRs.MoveLast
	 Response.Write("	 Acessos: <b>"& vRs("idContador") &"</b> | "& vbcrlf)
	vRs.Close
   Set vRs = Nothing
  vConexao.Close
 Set vConexao = Nothing

Para outra que usa .Open() e Execute() Select, Insert, Update?

 

Em qual das duas eu ganho maior performance? Outra coisa, é errado o modo da primeira?

 

Como, fazer no primeiro modo em Asp.NET (VB)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia,

 

Então amigo, este primeiro modo que você descreveu tem um problema de ser um late binding. Neste caso, você poderia só encontrar erros em tempo de execução. O que não seria interessante.

 

No .net temos alternativas bem mais interessantes, com early binding e que ainda possibilitam a criação e objeto de acesso a dados fortemente tipados.

 

Se você deseja apenas uma simples consulta use o data reader

http://64.233.169.104/search?q=cache:IXYyo...lient=firefox-a

 

Se você vai fazer diversas operações com essa tabela, então vá de dataset: http://www.asp.net/learn/data-access/tutorial-01-vb.aspx

 

Performaticamente, o datareader é muito superior, mas não é fortemente tipado, é somente leitura para frente e trabalha de maneira conectada. Se nada disso for um problema... então... é datareader.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta definir sua connection string e usar o OleDb ao invés do Sql

 

Ex.:

 

CODE
Dim sConnectionString, sSQL As String

 

'SQL Connection String

sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\yourdatabase.mdb"

 

sSQL = "SELECT Title FROM yourTable"

 

Dim conn As New System.Data.OleDb.OleDbConnection(sConnectionString)

Dim cmd As New System.Data.OleDb.OleDbCommand(sSQL, conn)

Dim dr As System.Data.OleDb.OleDbDataReader

conn.Open()

 

dr = cmd.ExecuteReader()

 

Do While dr.Read()

System.Console.WriteLine(dr.Item("Title"))

Loop

 

dr.Close()

conn.Close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso me ajudou:

 

Option Explicit

   Private Sub cmdOpen_Click()
	   Dim Conn1 As New adodb.Connection
	   Dim Cmd1 As New adodb.Command
	   Dim Errs1 As Errors
	   Dim Rs1 As New adodb.Recordset

	   Dim i As Integer
	   Dim AccessConnect As String

	   ' Error Handling Variables
	   Dim errLoop As Error
	   Dim strTmp As String

	   AccessConnect = "Driver={Microsoft Access Driver (*.mdb)};" & _
					 "Dbq=nwind.mdb;" & _
					 "DefaultDir=C:\program files\devstudio\vb;" & _
					 "Uid=Admin;Pwd=;"

	   '---------------------------
	   ' Connection Object Methods
	   '---------------------------

	   On Error GoTo AdoError  ' Full Error Handling which traverses
							   ' Connection object

	   ' Connection Open method #1:  Open via ConnectionString Property
	   Conn1.ConnectionString = AccessConnect
	   Conn1.Open
	   Conn1.Close
	   Conn1.ConnectionString = ""

	   ' Connection Open method #2:  Open("[ODBC Connect String]","","")
	   Conn1.Open AccessConnect
	   Conn1.Close

	   ' Connection Open method #3:  Open("DSN","Uid","Pwd")
	   Conn1.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
				  "DBQ=nwind.mdb;" & _
				  "DefaultDir=C:\program files\devstudio\vb;" & _
				  "Uid=Admin;Pwd=;"
	   Conn1.Close


	   '--------------------------
	   ' Recordset Object Methods
	   '--------------------------

	   ' Don't assume that we have a connection object.
	   On Error GoTo AdoErrorLite

	   ' Recordset Open Method #1:  Open via Connection.Execute(...)
	   Conn1.Open AccessConnect
	   Set Rs1 = Conn1.Execute("SELECT * FROM Employees")
	   Rs1.Close
	   Conn1.Close

	   ' Recordset Open Method #2:  Open via Command.Execute(...)
	   Conn1.ConnectionString = AccessConnect
	   Conn1.Open
	   Cmd1.ActiveConnection = Conn1
	   Cmd1.CommandText = "SELECT * FROM Employees"
	   Set Rs1 = Cmd1.Execute
	   Rs1.Close
	   Conn1.Close
	   Conn1.ConnectionString = ""

	   ' Recordset Open Method #3:  Open via Command.Execute(...)
	   Conn1.ConnectionString = AccessConnect
	   Conn1.Open
	   Cmd1.ActiveConnection = Conn1
	   Cmd1.CommandText = "SELECT * FROM Employees"
	   Rs1.Open Cmd1
	   Rs1.Close
	   Conn1.Close
	   Conn1.ConnectionString = ""

	   ' Recordset Open Method #4:  Open w/o Connection & w/Connect String
	   Rs1.Open "SELECT * FROM Employees", AccessConnect, adOpenForwardOnly
	   Rs1.Close

   Done:
	   Set Rs1 = Nothing

	   Set Cmd1 = Nothing
	   Set Conn1 = Nothing

	   Exit Sub


   AdoError:
	   i = 1
	   On Error Resume Next

	   ' Enumerate Errors collection and display properties of
	   ' each Error object (if Errors Collection is filled out)
	   Set Errs1 = Conn1.Errors
	   For Each errLoop In Errs1
		With errLoop
		   strTmp = strTmp & vbCrLf & "ADO Error # " & i & ":"
		   strTmp = strTmp & vbCrLf & "   ADO Error   # " & .Number
		   strTmp = strTmp & vbCrLf & "   Description   " & .Description
		   strTmp = strTmp & vbCrLf & "   Source		" & .Source
		   i = i + 1
		End With
	   Next

   AdoErrorLite:
	   ' Get VB Error Object's information
	   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
	   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
	   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

	   MsgBox strTmp

	   ' Clean up gracefully without risking infinite loop in error handler
	   On Error GoTo 0
	   GoTo Done
   End Sub

http://support.microsoft.com/kb/168336/pt-br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.