Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[solved] Mit Mono und C# auf mdb-Dateien zugreifen?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 11:20 am    Post subject: [solved] Mit Mono und C# auf mdb-Dateien zugreifen? Reply with quote

Hallo,

ich weiß gar nicht wo ich anfangen soll, bei all Herumfummeln und Herumfrickeln, das ich heute schon hinter mir habe.
Jedenfalls muss ich unbedingt die Daten aus einem Microsoft-mdb-File auslesen können, und zwar mit C#.
Es fängt schon mal damit an, dass C# in Mono offensichtich nur unzureichend implementiert wurde, da ein using System.Data.OleDb nicht gekannt wird.
Offensichtlich ist die Lösung, dass man es mit

Code:
mcs -r:System.Data.dll *.cs -out:Main.exe


kompilieren muss, aus welchem Grund auch immer.
Wie auch immer, das Ausführen von Main.exe schafft mit folgendem Testprogramm keinen Datenbankzugriff, da nur irgendwelche Fehlermeldungen kamen:

Code:
using System;
using System.Data;
using System.Data.OleDb;

namespace Datenbankprogramm  {
      public class DataReader   {
         
         private OleDbConnection connection;
         private String connectionString = "provider = Microsoft.JET.OLEDB.4.0;"

                                        + @"data source = \home\markus\Csharp\schule2000.mdb";
      
      private void OpenConnection()   {
          try  {
             connection = new OleDbConnection();
             connection.ConnectionString = connectionString;
             connection.Open();
             Console.WriteLine("Verbindung wurde erfolgreich aufgebaut");
          }
          catch (OleDbException exc)   {

                Console.WriteLine("Fehler1-2: " + exc.Message);

            }      
      }
      
      private void CloseConnection()   {
          connection.Close();
          Console.WriteLine("Verbindung wurde erfolgreich geschlossen");
      }
   }
}


Daraufhin fand ich die gdalib. Ich installierte sie, sie scheint auch mehrere Datenbanktypen zu unterstützen, aber, wie könnte es anders sein, kein ODBC. Auf meinen Main.exe-Ausgabefehler hin fand ich eine schlaue Meldung in einer Newsgroup, wo es hieß, man solle ....

this means the config file is empty. You need to create some datasource,
either using the gda-config-tool or, if you've got libgnomedb installed,
by using gnome-database-properties.


Jetzt bin ich leider genauso schlau wie vorher, wobei libgnomedb offensichtlich gar nichts damit zu tun hat.
Das gda-config-tool hilft auch nicht viel weiter. Es liest nur das Konfigurationsfile von ~/.libgda/config ein, und zeigt eine Prompt, mit der man aber nicht besonders viel machen kann:

Code:
markus@gentoo ~ $ gda-config-tool
Using configuration file from /home/markus/.libgda/config
gda> help
          help  Display this help.
        config  Enters libgda configuration management mode.
         query  Enters query mode.
          quit  Finish the program.

gda> config
//Das hier wird auch nur deswegen gezeigt, weil ich das File schon händisch bearbeitet habe. Davor zeige es gar nichts an.
Entity: line 6: parser error : attributes construct error
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.m
                                                ^
Entity: line 6: parser error : Couldn't find end of Start Tag entry line 6
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.m
                                                ^

** (process:25070): WARNING **: File empty or not well-formed.
config> query
Error: Unknown command
config> query test
Error: Unknown command
config>


Daten kann man damit zwar ins Konfigurationsfile schreiben, aber was nutzt es, wenn man nicht weiß, was man eintragen muss:

Code:
markus@gentoo ~ $ gda-config-tool --help
Usage: gda-config-tool [OPTION...]
  -c, --config-file=filename     File to load the configuration from.
  -l, --list-providers           Lists installed providers
  -L, --list-datasources         Lists configured datasources
  -n, --name=STRING              User-assigned name for this connection.
  -u, --user=STRING              User name to pass to the provider.
  -p, --password=STRING          Password for the given user to connect to the
                                 DB backend.
  -P, --provider=STRING          Provider name.
  -d, --DSN=STRING               Semi-colon separated string with name=value
                                 options to pass to the GDA provider.

Help options:
  -?, --help                     Show this help message
  --usage                        Display brief usage message


Danach dachte ich daran, die unixODBC-Treiber zu installieren, und als ich versuchte sie irgendwie zu benutzen, kamen nur Fehlermeldungen, die wohl den Anschein erwecken, dass dieser Treiber nicht funktionstüchtig ist:

Code:
markus@gentoo ~ $ ODBCConfig 
ODBCConfig: symbol lookup error: /usr/lib/libodbcinstQ.so.1: undefined symbol: iniElement


dann lies ich das mal mit diesem Treiber, und versucht mit gdalib wieder mein Glück.
Dabei kann man neue Datenbanktypen hinzufügen, aber blöde Sache, wenn man nicht weiß, welche Parameter man wie setzen muss.
Beispielsweise sieht die Ausgabe für mySQL so aus:

Code:
Provider name: MySQL
Description: Provider for MySQL databases
DSN parameters: DATABASE HOST PORT UNIX_SOCKET USE_SSL
Location: /usr/lib/libgda/providers/libgda-mysql.so


Und wie sähe die Ausgabe für mdb-Dateien aus? Welcher Datenbanktyp ist das eigentlich?
Dann fing ich eben mal an etwas herumzuprobieren, und werkte an dem User-Config-File herum:

Code:
markus@gentoo ~ $ cat .libgda/config 
<?xml version="1.0"?>
<libgda-config>
  <section path="/apps/libgda/Datasources/OLEDB">
    <entry name="Provider" type="string" value="Microsoft.JET.OLEDB.4.0" />
    <entry name="Description" type="string" value="OLEDB 4.0 DB" />
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.mdb" />
  </section>
</libgda-config>


Dass der DSN-Eintrag wahrscheinlich falsch ist, ist mir schon klar. Wie kommt man aber dazu? Zu DSN fand ich folgendes: http://www.kamath.com/tutorials/tut005_filedsn.asp . Ich weiß aber nicht, wie mir das weiterhelfen könnte. Zumindest reagiert das C#-Programm auf den Eintrag in libgda/config:

Code:
markus@gentoo ~/Csharp/Uebungsprogramme/Datenbankprogramm $ mono Main.exe          Entity: line 6: parser error : attributes construct error
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.m
                                                ^
Entity: line 6: parser error : Couldn't find end of Start Tag entry line 6
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.m
                                                ^

** (System.Data.OleDb:21489): WARNING **: File empty or not well-formed.

** (System.Data.OleDb:21489): CRITICAL **: gda_connection_get_errors: assertion `GDA_IS_CONNECTION (cnc)' failed


Hat irgendjemand irgend eine Ahnung davon, was man hier machen muss, und dieses Microsoft-Ding zum laufen zu bekommen?
_________________
vorher: Gentoo Reptile


Last edited by Battlestar Gentoo on Thu Apr 05, 2007 7:57 pm; edited 1 time in total
Back to top
View user's profile Send private message
TheCurse
l33t
l33t


Joined: 21 Jun 2004
Posts: 670
Location: Köln

PostPosted: Thu Apr 05, 2007 12:24 pm    Post subject: Reply with quote

Muss es denn unbedingt Mono/Linux sein? Unter Windows ist das ganze viel einfacher zu implementieren! Sagen wir mal so: Die mdb wurde auch sicherlich unter Windows erstellt. Also liegt es doch auch irgendwie nahe, die dort zum Beispiel in eine CSV Datei zu exportieren oder so... Dafür bräuchte man nur kurz nach mdb2csv bei google suchen und findet etwas passendes.

Prinzipiell sollte der Datenbankzugriff auch wie in deinem Beispiel funktionieren, allerdings sind "irgendwelche Fehlermeldungen" nicht gerade aufschlußreich, was du wohl falsch gemacht hast. Ist die data source so korrekt? Sieht mir irgendwie komisch aus mit den \s, insbesondere, weil ein \ in C# strings eine escape sequenz einleiten... Wenn du ein \ willst musst du \\ schreiben! War das vielleicht der Fehler? Probier es doch erstmal unter Windows/.NET zum laufen zu bekommen. Außerdem kann dein Testprogramm auch noch nicht komplett sein, oder doch? Es gibt ja gar keinen Einstiegspunkt...

Oha, da hab ich nochwas gefunden:
Code:
    <entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.mdb" />

Mach da mal ein
Code:
    <entry name="DSN" type="string" value="URI='/home/markus/Csharp/schule2000.mdb'" />
raus, vielleicht behebt das schon deine Probleme.

Gruß,
Tim
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 12:45 pm    Post subject: Reply with quote

Hallo,

also vorerst Windows ist kein Thema. Ich habe zwar auf einer anderen Platte noch eine alte XP-Installation, aber die ist 4 Jahre alt, d.H. jeglicher Virenschutz o.ä. quasi nicht vorhanden. Darüberhinaus habe ich schon gar kein .NET-Framework.

Prinzipiell sollte der Datenbankzugriff auch wie in deinem Beispiel funktionieren, allerdings sind "irgendwelche Fehlermeldungen" nicht gerade aufschlußreich,

Die Fehlermeldungen waren ungefähr diese, die ich bereits beschrieb.

Ist die data source so korrekt? Sieht mir irgendwie komisch aus mit den \s, insbesondere, weil ein \ in C# strings eine escape sequenz einleiten... Wenn du ein \ willst musst du \\ schreiben! War das vielleicht der Fehler?

Ja, sie ist korrekt. In C# kann ein Klammeraffe vor dem String geschrieben werden, wodurch du diesen nicht mehr mit Escape-Zeichen versehen musst.
Ich versuchte natürlich auch schon Backslashes statt Slashes zu schreiben. Allerdings stimmen wohl die Slashes, da ich mich ja auf keinem Windowssystem befinde.

Außerdem kann dein Testprogramm auch noch nicht komplett sein, oder doch? Es gibt ja gar keinen Einstiegspunkt...

Die Main-Methode habe ich natürlich in diesem Posting weggelassen, da diese ohnehin selbstverständlich ist.

Oha, da hab ich nochwas gefunden:
Code:
<entry name="DSN" type="string" value="URI="/home/markus/Csharp/schule2000.mdb" />


Da hast du recht. Jetzt erscheint nur mehr eine Fehlermeldung.
Ich glaube aber trotzdem nicht, dass diese Angabe im Config-File überhaupt stimmt. Die anderen Datenbanksysteme habe hier ganz andere gesetzt Werte, wie ich bereits in meinem Orginalposting beschrieb, z.B:

Code:

DSN parameters: DATABASE HOST PORT UNIX_SOCKET USE_SSL


Dies ist die Fehlermeldung, die jetzt noch auftritt.

Code:
markus@gentoo ~/Csharp/Uebungsprogramme/Datenbankprogramm $ mono Main.exe

** (System.Data.OleDb:19344): CRITICAL **: gda_connection_get_errors: assertion `GDA_IS_CONNECTION (cnc)' failed



Ich bin gerade dabei, den neuesten unixODBC-Treiber zu installieren. Ich hoffe nur, dass dieser funktionstüchtig ist, und mal sehen, ob der vielleicht irgendwas bewirkt. Ich weiß eigentlich noch immer nicht genau, was ich denn eigentlich nun benötige.
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
achimh
n00b
n00b


Joined: 02 Sep 2006
Posts: 54
Location: Austria

PostPosted: Thu Apr 05, 2007 12:54 pm    Post subject: Reply with quote

Alternativ gibt es noch die mdbtools, die auch in Portage sind. Damit kannst du auf die Access Datenbank zugreifen, rudimentäre SQL statements übers sqlite absetzen und Daten exportieren (falls es nur mal wichtig ist an die bestehenden Daten zu kommen).

Bei Mono kenne ich mich leider nicht aus.
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 1:10 pm    Post subject: Reply with quote

Hi,

die mdbtools sind zwar installiert. Jetzt habe ich aber gerade bemerkt, dass sie mit "-odbc" installiert sind. Ich lasse es gerade nochmals durchlaufen, mal sehen, was es bringt. Dabei kam ich drauf, dass libdga ebenfalls nicht mit odbc und mdb kompiliert wurde. Vielleicht bringt mich das gleich mal einen entscheidenen Schritt weiter.
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 1:46 pm    Post subject: Reply with quote

Jetzt ist in gda zwar OBDC und MS Access vorhanden....

Code:
markus@gentoo ~ $ gda-config-tool -l
---Providers list---
Provider name: Berkeley-DB
Description: Provider for Berkeley databases
DSN parameters: FILE DATABASE
Location: /usr/lib/libgda/providers/libgda-bdb.so
---
Provider name: MySQL
Description: Provider for MySQL databases
DSN parameters: DATABASE HOST PORT UNIX_SOCKET USE_SSL
Location: /usr/lib/libgda/providers/libgda-mysql.so
---
Provider name: PostgreSQL
Description: Provider for PostgreSQL databases
DSN parameters: DATABASE SEARCHPATH HOST HOSTADDR OPTIONS PORT REQUIRESSL
                TTY
Location: /usr/lib/libgda/providers/libgda-postgres.so
---
Provider name: LDAP
Description: Provider for LDAP directory
DSN parameters: FLAGS HOST PORT BINDDN AUTHMETHOD
Location: /usr/lib/libgda/providers/libgda-ldap.so
---
Provider name: XML
Description: XML provider, based on the libgda XML database format
DSN parameters: URI
Location: /usr/lib/libgda/providers/libgda-xml.so
---
Provider name: MS Access
Description: Provider for Microsoft Access files
DSN parameters: FILENAME
Location: /usr/lib/libgda/providers/libgda-mdb.so
---
Provider name: ODBC
Description: Provider for ODBC data sources
DSN parameters: STRING
Location: /usr/lib/libgda/providers/libgda-odbc.so


...aber das Programm funktioniert immer noch nicht:

Code:

markus@gentoo ~/Csharp/Uebungsprogramme/Datenbankprogramm $ mono Main.exe       Entity: line 2: parser error : Start tag expected, '<' not found

^

** (System.Data.OleDb:20356): WARNING **: File empty or not well-formed.

** (System.Data.OleDb:20356): CRITICAL **: gda_connection_get_errors: assertion `GDA_IS_CONNECTION (cnc)' failed


Es funktioniert übrigens mit zwei verschiedenen Access-Files nicht, da genau die gleiche Fehlermeldung kommt, also muss der Fehler nun wieder irgendwo anders liegen.
Desweiteren versuchte ich auch im C#-File den Providernamen zu einem der jetzt in der dga-Datei angezeigten Provider zu ändern, aber an den Fehlermeldungen ändert sich weder etwas, noch funktioniert es überhaupt endlich mal.
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
TheCurse
l33t
l33t


Joined: 21 Jun 2004
Posts: 670
Location: Köln

PostPosted: Thu Apr 05, 2007 2:34 pm    Post subject: Reply with quote

Schau nochmal über die XML Datei rüber. Da scheint irgendwas nicht in Ordnung zu sein (lies die Fehlermeldung). Er findet kein start tag, poste vielleicht nochmal die komplette Datei, dann finden wir es vielleicht
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 2:37 pm    Post subject: Reply with quote

Nun kam ich schließlich zu der Annahme, es könne an "Entity" liegen, da diese Ausgabe in der Konsole erscheint. Daraufhin wollte ich entity, einen XML-Parser installieren, aber wie könnte es denn anders sein, die Installation bricht natürlich ab:

Code:
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DJS_EXT_DIR=\"/usr/lib/entity\" -DJS_SYSBOOT_D       IR=\"/usr/lib/entity\" -O2 -march=pentium4 -O2 -pipe -I/usr/X11R6/include -I/usr       /include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -Wall -I/usr/lo       cal/ssl/include/ -L/usr/local/ssl/lib/ -c iostream.c  -fPIC -DPIC -o iostream.lo
In file included from njs/internal.h:96,
                 from iostream.c:30:
./njs/njs.h:275: warning: type qualifiers ignored on function return type
./njs/njs.h:287: warning: type qualifiers ignored on function return type
./njs/njs.h:469: warning: type qualifiers ignored on function return type
iostream.c: In function 'js_iostream_read':
iostream.c:236: error: invalid lvalue in assignment
iostream.c: In function 'js_iostream_write':
iostream.c:293: error: invalid lvalue in assignment
make[3]: *** [iostream.lo] Fehler 1
make[3]: Leaving directory `/var/tmp/portage/dev-lang/entity-0.7.2-r1/work/entit       y-0.7.2/libentitynjs'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/var/tmp/portage/dev-lang/entity-0.7.2-r1/work/entit       y-0.7.2/libentitynjs'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/var/tmp/portage/dev-lang/entity-0.7.2-r1/work/entit       y-0.7.2'
make: *** [all-recursive-am] Fehler 2

!!! ERROR: dev-lang/entity-0.7.2-r1 failed.
Call stack:
  ebuild.sh, line 1614:   Called dyn_compile
  ebuild.sh, line 971:   Called qa_call 'src_compile'
  environment, line 1216:   Called src_compile
  entity-0.7.2-r1.ebuild, line 61:   Called die

!!! (no error message)
!!! If you need support, post the topmost build error, and the call stack if rel       evant.
!!! A complete build log is located at '/var/tmp/portage/dev-lang/entity-0.7.2-r       1/temp/build.log'.

_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 2:38 pm    Post subject: Reply with quote

TheCurse wrote:
Schau nochmal über die XML Datei rüber. Da scheint irgendwas nicht in Ordnung zu sein (lies die Fehlermeldung). Er findet kein start tag, poste vielleicht nochmal die komplette Datei, dann finden wir es vielleicht


Welche XML-Datei ist damit überhaupt gemeint? Ich habe hier keine XML-Dateien?
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
TheCurse
l33t
l33t


Joined: 21 Jun 2004
Posts: 670
Location: Köln

PostPosted: Thu Apr 05, 2007 2:39 pm    Post subject: Reply with quote

Sorry, ich meinte die .libgda/config. Ist im XML Format.
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 2:45 pm    Post subject: Reply with quote

In dieser Datei steht seit der Aufnahme von ODBC und MS Access in die Konfiguration gar nichts mehr drin.
ich frage mich allerdings, wo diese Daten gespeichert werden, da in /etc nur folgendes zu finden ist:

Code:
markus@gentoo ~/Csharp/Uebungsprogramme/Datenbankprogramm $ cat /etc/libgda/config
<?xml version="1.0"?>
<libgda-config>
        <section path="/apps/libgda/Datasources/Default">
                <entry name="Provider" type="string" value="XML"/>
                <entry name="Username" type="string" value="nouser"/>
                <entry name="DSN" type="string" value="URI=/tmp/gnome-db-test.db"/>
                <entry name="Description" type="string" value="Default data source"/>
        </section>
</libgda-config>

_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
TheCurse
l33t
l33t


Joined: 21 Jun 2004
Posts: 670
Location: Köln

PostPosted: Thu Apr 05, 2007 2:50 pm    Post subject: Reply with quote

Hmm, ich seh den Fehler nicht...
Interessant könnte für dich auch gda-sharp sein, ich schau mir das gerade an und teste mal ein bisschen. Wenn ich zugriff auf ne Access Datenbank habe poste ich dir mal die Lösung sozusagen.
Back to top
View user's profile Send private message
TheCurse
l33t
l33t


Joined: 21 Jun 2004
Posts: 670
Location: Köln

PostPosted: Thu Apr 05, 2007 5:04 pm    Post subject: Reply with quote

Ich hab mal ein bisschen rumgespielt, aber so ganz komm ich damit nicht zurecht, weil ich ein SIGSEGV bekomme... Liegt wahrscheinlich an meiner Version... Kannst dir ja mal den Codeschnipsel hier anschauen, ob dir das weiterhilft:
Code:
         Gda.Application.Init("mdbtest", "0.1");

         Gda.Client client = new Gda.Client();
         Gda.Connection conn = client.OpenConnection("test", "nouser", "", Gda.ConnectionOptions.ReadOnly);
         
         if (conn != null)
         {
            if (conn.IsOpen)
            {
               Gda.DataModel model = conn.GetSchema(Gda.ConnectionSchema.Databases, new Gda.ParameterList());
               for (int colid = 0; colid < model.NColumns; colid++)
               {
                  Console.WriteLine(model.GetColumnTitle(colid));
                  for (int rowid = 0; rowid < model.NRows; rowid++)
                  {
                     Gda.Value v = model.GetValueAt(colid, rowid);
                     Console.WriteLine(v.String);
                  }   
               }         
            }
         }
Der SIGSEGV kommt in der Zeile
Code:
Gda.Value v = model.GetValueAt(colid, rowid);
Also wenn du die methode nicht brauchst, der Rest scheint zu funktionieren.
Dazu die ~/.libgda/config:
Code:
<?xml version="1.0"?>
<libgda-config>
  <section path="/apps/libgda/Datasources/test">
    <entry name="DSN" type="string" value="FILENAME=/home/xxx/test.mdb"/>
    <entry name="Description" type="string" value="Testmdb"/>
    <entry name="Password" type="string" value=""/>
    <entry name="Provider" type="string" value="MS Access"/>
    <entry name="Username" type="string" value="nouser"/>
  </section>
</libgda-config>
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 5:37 pm    Post subject: Reply with quote

Hallo,

ehrlich gesagt kenne ich mich schon überhaupt nicht mehr aus.
Muss ich gda nun speziell im Code irgendwie ansprechen, oder wie funktioniert das Zugreifen jetzt eigentlich? In Mono selbst scheint ja sowieso alles irgendwie abzulaufen, da die "using"-Anweisungen bei System.Data.... nur Fehlermeldungen hervorbringen (blabla missing Assembly reference...), aber das Kompilieren mit

Code:
$ mcs -r:System.Data.dll *.cs -out:Main.exe


funktioniert.
Du hast mich allerdings auf eine Idee gebracht. Sind die Ausgaben von gda-config-tool vielleicht nur die Vorlage, um das Config-File zu erstellen?
Ich schrieb mal einige Angaben in das Config-File und bekomme beim Ausführen der Main.exe nur mehr folgende Meldung:

Code:
$ mono Main.exe

** (System.Data.OleDb:32309): CRITICAL **: gda_connection_get_errors: assertion `GDA_IS_CONNECTION (cnc)' failed


Was soll das bedeuten? Bei Google findet man auch nicht wirklich sinnvolels dazu.
Meine Config-Datei sieht nun so aus:

Code:
<?xml version="1.0"?>
<libgda-config>
  <section path="/apps/libgda/Datasources/MS Access">
    <entry name="Provider" type="string" value="MS Access"/>
    <entry name="DSN" type="string" value="FILENAME=/home/markus/Csharp/schule2000.mdb"/>
    <entry name="Description" type="string" value="Test mdb"/>
    <entry name="Password" type="string" value=""/>
    <entry name="Username" type="string" value="nouser"/>
  </section>
</libgda-config>


Was ist eigentlich dieser section-path. Physisch kann er nicht sein, da ich diesen Pfad mit "find" nicht finde.
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
Battlestar Gentoo
l33t
l33t


Joined: 23 Dec 2004
Posts: 708
Location: Wien

PostPosted: Thu Apr 05, 2007 7:56 pm    Post subject: Reply with quote

Code:
         
private OleDbConnection connection = new OleDbConnection("MS Access");


Das war anscheinend die ganze Hexerei, da ich nun bei Open()-Anweisungen keine Fehlermeldungen mehr bekomme. Offensichtlich holt er sich die Daten aus dem Config-File. Ich habe jetzt zwar keine Zeit mehr Abfragen zu testen, aber es sieht so aus, als würde es funktionieren.

Nachtrag:
In Mono in der "Solution"->References->rechte Maustaste->Edit references kann man die nicht gefundenen Referenzen hinzufügen. Somit muss man es auch nicht mehr aus der Konsole starten, was ohnehin komischerweise nicht richtig funktoniert hat wie man beim funktionierenden Programm nun erkennen konnte, da das Programm irgendwie manche Console.WriteLine-Anweisungen ignorierte.
_________________
vorher: Gentoo Reptile
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5205

PostPosted: Thu Apr 05, 2007 8:35 pm    Post subject: Reply with quote

Battlestar Gentoo wrote:
Hallo,

ehrlich gesagt kenne ich mich schon überhaupt nicht mehr aus.
Muss ich gda nun speziell im Code irgendwie ansprechen, oder wie funktioniert das Zugreifen jetzt eigentlich? In Mono selbst scheint ja sowieso alles irgendwie abzulaufen, da die "using"-Anweisungen bei System.Data.... nur Fehlermeldungen hervorbringen (blabla missing Assembly reference...), aber das Kompilieren mit

Code:
$ mcs -r:System.Data.dll *.cs -out:Main.exe


Das sehe ich nicht als problem an, wenn du die Dlls angeben musst. Unter Windows mit dem Visual Studio fügt die IDE die passenden angaben über die benötigten DLL referencen hinzu, wenn das Projekt übersetzt wird.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum