![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Jr. Member
![]() Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87
|
![]() Hallo liebe WCM-Gemeinde,
ich habe hier ein großes Problem mit meinem Webspace-Provider, und vielleicht könnt ihr mit helfen. Ich habe eine ASPX-Datei, mit der ich auf eine Access-Datenbank zugreife und die sieht so aus: <%@ Page Language="VB" Debug="true" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> Sub Page_Load (ByVal Sender As Object, ByVal E As EventArgs) ' Verbindungszeichenfolge zusammensetzen Dim connStr As String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" connStr += "Data Source=E:\kunden\homepages\3\d92260533\test\200505 01-01\Shop.mdb;" ' Verbindung zur Datenbank herstellen Dim conn As New OleDbConnection(connStr) conn.Open() ' SQL-Kommando erstellen und ausführen Dim sql As String sql = "SELECT * FROM TblArtikel" Dim cmd As New OleDbCommand(sql, conn) Dim myDataReader As OleDbDataReader myDataReader = cmd.ExecuteReader() ' SQL-Resultat an ein Steuerelement binden myGrid.DataSource = myDataReader DataBind() myDataReader.Close() conn.Close() End Sub </script> Das funktioniert bei mir Lokal auch einwandfrei. Leider nicht bei meinem Provider Schlund&Partner bzw. 1&1. Hier ruft die Zeile: conn.Open() einen Security-Error hervor. Hat irgendwer eine Idee, woran das liegen könnte und vielleicht eine Idee für die Lösung, MS Access-Datenbank doch noch mit ASP.Net bei diesen Providers zu betreiben. Bis jetzt arbeitete ich mit ASP und da funktioniert das einwandfrei. Vielen Dank schon mal im Voraus, lg, webwurm |
![]() |
![]() |
![]() |
#2 | |
Classic Car Driver
![]() |
![]() Zitat:
Der Pfad kann nicht passen, daher das Problem mit der Verbindung. |
|
![]() |
![]() |
![]() |
#3 |
Jr. Member
![]() Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87
|
![]() Das ist der Pfad des Webhosters.
Wie gesagt: Auf allen meinen ASP-Seiten funktioniert's mit diesem Verbindungsstring. Nur mit ASP.Net nicht. Irgendwer hat mir etwas gesagt, dass Zugriff aus MS Access kein managed Code ist, und daher von großen Providers unterbunden wird?! |
![]() |
![]() |
![]() |
#4 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi,
der zugriff auf eine ms-acess datenbank muss über den oledb provieder erfolgen (das machst du in deinem code eh korrekt) - dieser greift auf "darunterleigende" treiber zu (für z.B. dbase, excel, csv dateien, access,...) diese treiber sind natürlich nicht in managed code geschreiben. im gegensatz wird beim zugriff auf z.B. sql server und seit .net 1.1 auch oracle ein eigener provider von .net bereitgestellt, sodass der zugriff komplett managed erfolgen kann. (es gibt noch mehrere managed treiber, für access ist mir nix bekannt) zugriff von einer webseite auf das dateisystem ist sicher ein sicherheitsproblem. versuche mal, eine odbc connection auf die ms-access datenbank einzurichten und dann über diese auf die datenkbank zuzugreifen. asp.net hat ein komplett neues security konzept - nicht vergleichbar mit asp. asp.net verwendet die sog. "code access security" - als stichwort, falls du mehr darüber erfahren willst. fg -hannnes |
![]() |
![]() |
![]() |
#5 |
Jr. Member
![]() Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87
|
![]() vielen dank, das hat mir schon weitergeholfen.
ich habe jetzt von verschiedenen internetseiten folgenden code zusammengetragen, mit dem ich eine odbc-connection aufbauen kann. allerdings habe ich jetzt die herausforderung, dass ich kein OleDbDataReader-Objekt habe. Wie binde ich daher meine Daten ein ein zB DataGrid?? Hier mein Code: 'ODBC-Verbindung herstellen Dim strConn As String Dim oODBCConnection As OdbcConnection strConn = "DBQ=E:\kunden\homepages\3\d92260533\test\2005 0501-01\Shop.mdb; Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" oODBCConnection = New Odbc.OdbcConnection(strConn) oODBCConnection.Open() 'ODBC-DataAdapter verbinden Dim strSql As String Dim objDataAdapter As New OdbcDataAdapter() strSql = "SELECT * from TblArtikel" objDataAdapter = New OdbcDataAdapter(strSQL, oODBCConnection) 'DataSet füllen Dim objDataSet As New DataSet() objDataAdapter.Fill(objDataSet, "TblArtikel") '??? 'DataGrid füllen DataGrid.DataSource = '...??? DataGrid.DataBind() 'ODBC-Verbindung schließen oODBCConnection.Close() |
![]() |
![]() |
![]() |
#6 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi,
Daten ans datagrid binden hat nix mit oledbreader zu tun - daten eines Datasets werden an ein Grid gebunden und soeines hast du ja. ![]() (datareader ist die schnellste möglichkeit, daten auszulesen - wenn du aber an controls binden willst, ist es einfacher ein dataset zu verwenden, weil hier das binding "automatisch" geht) Zusammenhang: Für verschiedene Datenbank brauchst du unterschiedliche Provider, um diese anzubinden, also z.B. SQLServer Provider, Oracle Provicer, OleDB Provider, ODBC Provider, ... Um Befehle an die Datenbank zu schicken bzw. generell als Bindeglied zwischen Datenbank und Dataset brauchst du einen Adapter - in deinem fall ist das der OdbcDataAdapter. ein dataset ist eine "in memory" repräsentation deiner Daten und hat grundsätzlich einmal garnix mit datenbank zu tun - die daten eines datasets können auch aus einer textdatei kommen und das dataset amnuell aufgebaut werden. natürlich ist ein dataset aber auch dazu gedacht, daten einer DB in memory darzustellen. (hat den vorteil, dass man z.B. ein dataset nach xml serialisieren kann) Controls wie z.B. ein datagrid werden an ein Dataset gebunden. Der Befehl: objDataAdapter.Fill(objDataSet, "TblArtikel") verwendet den datenbankadapter um eine abfrage durchzuführen und die retour kommenden daten in das "objDataSet" zu füllen. man könnte da noch viel darüber schreiben...was verwendest du als entwicklungsumgebung? es gibt z.B. eine visual studio 2005 express edition - die ist gratis zum download. da macht all diese sachen ein wizzard. natürlich sollte man als programmierer wissen, was dieser im hintergrund macht. aber für den anfang sollte das ausreichen. fg -hannes |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|