Avatar billede dl Nybegynder
25. januar 2008 - 20:18 Der er 27 kommentarer og
1 løsning

Forbind til Access 2007 database, via sql.

Jeg har en Access 2007 database, jeg vil gerne forbinde til den, og trække noget data ud.

jeg har denne kode.

            SqlConnection conn = new SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\systemdatabase.accdb;Persist Security Info=True providerName=System.Data.OleDb");
            SqlDataAdapter adapter = new SqlDataAdapter("select * from language", conn);
            DataTable table = new DataTable();

            adapter.Fill(table);
            conn.Close();

            conn.Dispose();
            adapter.Dispose();


            GridView1.DataSource = table;
            GridView1.DataBind();



Den connectionString er en som Visual Studio selv har generet, og den er testes og virker fra VS.

Men når jeg køre programmet, så får jeg denne fejl:

Nøgleordet understøttes ikke: 'provider'.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.ArgumentException: Nøgleordet understøttes ikke: 'provider'.

Kildefejl:

Linje 113:
Linje 114:
Linje 115:            SqlConnection conn = new SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\systemdatabase.accdb;Persist Security Info=True providerName=System.Data.OleDb");
Linje 116:            SqlDataAdapter adapter = new SqlDataAdapter("select * from language", conn);
Linje 117:            DataTable table = new DataTable();



Hvad kan det være  ??
hvorfor ??
er der nogle referancer jeg skal tilføje som jeg ikke har været opmærksom på ??


// Dennis
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 20:34 #1
Du skal ikke bruge SqlConnection (den er til Sql server). Hvad jeg kan se i din connectionstring skal du bruge OleDbConnection i stedet for. Det vil sige i stedet for Using System.Data.SqlClient; skal du bruge System.Data.OleDb. Og ellers er det bare at skifte alle de steder hvor der står Sql ud med OleDb.
Avatar billede dl Nybegynder
25. januar 2008 - 20:37 #2
K, det skal da  prøves igen så. Da jeg har forsøgt mig med det.

Det burde da være muligt at bruge access som en sql server, da man kan via java, connecte til den, og fyr sql af på den.

men jeg prøver lige din løsning. og vender tilbage.

//dl
Avatar billede dl Nybegynder
25. januar 2008 - 20:41 #3
Den nye kode:

            String statement = "select * from language";
            OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\systemdatabase.accdb;Persist Security Info=True providerName=System.Data.OleDb");
            OleDbDataAdapter adapter = new OleDbDataAdapter(statement, conn);
            DataTable table = new DataTable();

            adapter.Fill(table);
            conn.Close();

            conn.Dispose();
            adapter.Dispose();

            GridView1.DataSource = table;
            GridView1.DataBind();



FEJL:

Initialiseringsstrengens format stemmer ikke overens med OLE DB.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: Initialiseringsstrengens format stemmer ikke overens med OLE DB.

Kildefejl:

Linje 138:            DataTable table = new DataTable();
Linje 139:
Linje 140:            adapter.Fill(table);
Linje 141:            conn.Close();
Linje 142:


Hvad nu ?

//dl
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 20:52 #4
Til slut i din connectionstring tilføj lige en semikolon (;).
Avatar billede dl Nybegynder
25. januar 2008 - 21:08 #5
FEJL:  Den installerbare ISAM kan ikke findes.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: Den installerbare ISAM kan ikke findes.

Kildefejl:

Linje 137:            DataTable table = new DataTable();
Linje 138:
Linje 139:            adapter.Fill(table);
Linje 140:            conn.Close();
Linje 141:


på denne  connextionstr: 

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\systemdatabase.accdb;Persist Security Info=True; providerName=System.Data.OleDb;");
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 21:20 #6
Det går da fremad, du får en ny fejl hver gang, sådan er det at programmere. :) Har du password på din database og ligger den på din egne computer?
Avatar billede dl Nybegynder
25. januar 2008 - 21:31 #7
Ja, jeg ved det :)  men lige  pt.. er dot.net  bare et helvede :)  men okay, access er jo ikke lige frem en database  ;)  SQL Servr / oracle  så er vi der.

Men access ligger i App_Data i min projektmappe, som så igen ligger localt på min pc.
hvad angår password, så nej, det må komme til sidst.
Avatar billede dl Nybegynder
25. januar 2008 - 21:31 #8
Endtil vidre skal du have en stor tak for den meget hurtige feedback.
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 21:38 #9
Jeg er egentlig ligeglad med point, men hvis ikke var til besvær måtte du gerne give mig lidt karma, så kan du bare tage point tilbage selv.

De fleste udbydere har MySql eller Sql Server Express. Access 2007 har sine kvaliteter, men de to forrige er bedre. Dem har jeg også lidt bedre erfaring med. :)

Ps. .Net skal drille, men du bliver glad for det. :)
Avatar billede dl Nybegynder
25. januar 2008 - 21:47 #10
Sådan. Ja det skal drille, er lige begyndt som fuldtid, efter at være være med skolen.
8 timer, med  dot.net  og det driller hele tiden ... puu.

Har du en ide til, hvad det kunne være ?
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 21:49 #11
Prøv for sjov skyld at slå Persist Security Info=true fra

ConnectionStrings er generelt p***** irriterende fordi de skal være lige på.
Avatar billede dl Nybegynder
25. januar 2008 - 21:51 #12
det vil sige:  Persist Security Info=false
Avatar billede dl Nybegynder
25. januar 2008 - 21:52 #13
Gør ingen forskel, samme fejl med Isam
Avatar billede dl Nybegynder
25. januar 2008 - 21:53 #14
Men siden vi kommer helt ned til  adapter.Fill(table);

Så må det vil enlig betyde at vi er connectede til den, eftersom vi ingen fejl har fået på det.

eller er jeg helt væk ?
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 21:58 #15
Når du kalder adapter.Fill(table) åbner den forbindelsen. Lidt ligesom at have en forkert nøgle til hoveddøren. Det er først når du prøver at åbne døren at du opdager at den ikke virker.

Ellers prøv at sammenligne den med den her side http://www.connectionstrings.com/?carrier=access2007 Jeg bliver nødt til at løbe. Håber du finder ud af det
Avatar billede jeppekristensen Nybegynder
25. januar 2008 - 21:59 #16
Ps. prøv at fjerne providername
Avatar billede dl Nybegynder
25. januar 2008 - 22:08 #17
Ikke meget lykke:

IErrorInfo.GetDescription mislykkedes med E_FAIL(0x80004005).
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: IErrorInfo.GetDescription mislykkedes med E_FAIL(0x80004005).

Kildefejl:

Linje 141:            DataTable table = new DataTable();
Linje 142:
Linje 143:            adapter.Fill(table);
Linje 144:            conn.Close();
Linje 145:
Avatar billede jeppekristensen Nybegynder
26. januar 2008 - 02:03 #18
Prøv: @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=App_Data\systemdatabase.accdb;Persist Security Info=True; providerName=System.Data.OleDb;
Avatar billede dl Nybegynder
26. januar 2008 - 09:58 #19
Så få jeg denne fejl:
"I:\Programmer\Microsoft Visual Studio 9.0\Common7\IDE\App_Data\systemdatabase.accdb" er ikke en gyldig sti. Kontroller, at stinavnet er stavet korrekt, og at du er tilsluttet den server, hvor filen findes.


@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\App_Data\systemdatabase.accdb;Persist Security Info=True; providerName=System.Data.OleDb;

Samme fejl her.


Jeg har sådan set ikke flere ideer, til hvordan man klar denne her.

:)

er ikke 100m mester endnu ... men det skal nok komme.
Avatar billede jeppekristensen Nybegynder
26. januar 2008 - 13:52 #20
Prøv at skriv det gamle (|DataDirectory|) i stedet App_Data. Jeg bemærkede nemlig i en af dine første poster at du manglede et ; mellem slutningen af Persist Security Info = true og provider name = System.Data.OleDb. så det skulle være Persist Security Info=True; providerName=System.Data.OleDb; ´

Og det kan have været kilden til "Den installerbare ISAM kan ikke findes." Semikolon adskiller de forskellige informationer.
Avatar billede dl Nybegynder
27. januar 2008 - 13:32 #21
Desvære de små ting har jeg rettet, i alle de førsøg vi har lavet.

Så er det vil enlig bare at høre.

Hvad er Isam, og hvor kan man hente den, og er den gratis, også til commentical brug, hvis det nu skulle vise sig i fremtiden  :)  selvom det pt kun er lidt fritids projekt.

// dl
Avatar billede jeppekristensen Nybegynder
27. januar 2008 - 20:58 #22
Bliver nok nødt til at kaste håndklædet i ringen med forbindelsesstringen. Hvis du har visual studio kan du prøve at vælge View/Server Explorer og så højreklikke på dataconnections og vælge Add Connection og så prøve at lege lidt frem med connectionstrings.

Altenativt så overvej Sql Server Express den kan også "afmonteres" og tilføjes til et projekt. Den kan være lidt svær at lære, men er bedre end access.
Avatar billede dl Nybegynder
07. februar 2008 - 12:44 #23
jeg har løst problemmet. Jeg gik over til den  embedded sql server i VS2008.

jeppek..  vil du ikke komme med et svar.
Avatar billede dl Nybegynder
12. februar 2008 - 17:29 #24
jeg lukker, siden der ingen svar er kommet.
Avatar billede jeppekristensen Nybegynder
12. februar 2008 - 17:46 #25
He he. Det er jo hvad der sker. Så kan jeg huske at tjekke min mail. :)
Avatar billede dl Nybegynder
12. februar 2008 - 20:39 #26
jeg kan godt oprette et sp med 30 til dig. Prøver bare alt holde mine åbne sp på et minimum.

og efter, en del dage uden et svar, ja, så mente jeg godt jeg kunne luk og slukke.

//dl
Avatar billede jeppekristensen Nybegynder
12. februar 2008 - 20:45 #27
Det skal du ikke til at gøre.
Avatar billede dl Nybegynder
12. februar 2008 - 20:54 #28
så er det vist hermed lukket  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester