Inquiridor
ODBC

Pergunta
-
Alô,
Alguém pode me ajudar ? A conexão ODBC abaixo não funciona em um Webform mas funciona perfeitamente em um Winform:
Public Class Teste_Odbc
Inherits System.Web.UI.PagePrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim cnFS As Odbc.OdbcConnection
Try
cnFS = New Odbc.OdbcConnection
cnFS.ConnectionString = "DSN=AMS"
cnFS.Open()
Catch ex As Exception
Stop
Finally
cnFS.Close()
End TryEnd Sub
End Class
Já tentei diversas mudanças na ConnectionString sem sucesso.
O resultado atual é:?ex
{System.Data.Odbc.OdbcException}
[System.Data.Odbc.OdbcException]: {System.Data.Odbc.OdbcException}
HelpLink: Nothing
InnerException: Nothing
Message: "ERROR [HY024] [Microsoft][Driver ODBC para Microsoft Access] '(desconhecido)' não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside.
ERROR [IM006] [Microsoft][ODBC Driver Manager] Falha de SQLSetConnectAttr do driver
ERROR [HY024] [Microsoft][Driver ODBC para Microsoft Access] '(desconhecido)' não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside."
Source: ""
StackTrace: " at System.Data.Odbc.OdbcConnection.Open()
at Projetos.Teste_Odbc.Page_Load(Object sender, EventArgs e) in D:\Projetos\Teste_Odbc.aspx.vb:line 29"
TargetSite: {System.Reflection.RuntimeMethodInfo}
O mesmíssimo código funciona perfeitamente em um Winform conforme teste abaixo:
Public Class Form1
Inherits System.Windows.Forms.FormPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cnFS As Odbc.OdbcConnection
Try
cnFS = New Odbc.OdbcConnection
cnFS.ConnectionString = "DSN=AMS"
cnFS.Open()
Catch ex As Exception
Stop
Finally
cnFS.Close()
End Try
End Sub
End Class
Agradeço qquer ajuda.
Todas as Respostas
-
Pelo que vi você está tentando conectar-se a um banco Access através do ODBC.
Em aplicações Windows Forms, as fronteiras da aplicação é o computador local, porém em aplicações Web, a fronteira é a internet.
O ideal é você montar a string de conexão na sua aplicação e quando for informar o caminho do banco de dados utilize a função MapPath, que retorna para a aplicação o caminho relativo do arquivo a partir da pasta em que está instalado a aplicação web.
Este exemplo mostra uma string de conexão de sua aplicação web, acessando o banco de dados dados.mdb na pasta banco, localizada na pasta da aplicação:
DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\banco\dados.mdb")
-
Olá Paulo,
Veja este link, encontrará diversas string de conexões para varios providers, vale apenas dar um conferida :http://www.connectionstrings.com/
- Standard security:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
- Workgroup (system database):
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:System Database=system.mdw;"
- With password:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;" - Standard security:
-
Realizei outro teste criando um ODBCDataAdapter object usando a ToolBox do
Visual Studio 2003. No processo de configuração do DataAdapter criei
um ODBC Connection object para um determinado banco
de dados (na verdade é um banco de dados MDBS TITANIUN).Clicando com o botão direito no DataAdapter object a opção 'Data Adapter Preview'
retornou com sucesso os registros da tabela do banco de dados.O problema é que na execução da linha: da.fill(ds) dá o erro
ERROR [IM003] O driver especificado não pôde ser carregado devido ao erro de sistema 126.Nesta mesma página ASPX é feita sem problemas a atualização de um banco de dados SQL SERVER.
O problema ocorre com qualquer tentativa que faço de acesso via ODBC.Algum detalhe talvez relacionado com autenticação?
grato,
Paulo