olejohn
(15.285 point. Point ude: 360)
Forbindelse til database
Hej
Jeg sidder her og vil lave en forbindelse til en database jeg har oprettet i Access, men det lykkedes ikke rigtigt.
Jeg fandt på nettet en forklaring, hvor man -Meget let - forbandt
databasen Northwind, men den hedder jo Northwind.sdf.
Den database jeg vil forbinde hedder xxxx.mdb
Meget gerne en forklaring som selv jeg kan forstå, da jeg bestemt ikke er helt dus med dette program endnu.
M.v.h.
Ole
Skrevet man. d. 20. august 2012 kl. 17:09:01| #1
Simpelt eksempel:
using System;
using System.Data.OleDb;
public class MainClass
{
public static void Main(string[] args)
{
//OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb");
OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;Data Source=ARNEPC3;Initial Catalog=Test;Integrated Security=SSPI;");
con.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM T1", con);
OleDbDataReader rdr = cmd.ExecuteReader();
while(rdr.Read()) {
int f1 = (int)rdr[0];
string f2 = (string)rdr[1];
Console.WriteLine(f1 + " " + f2);
}
con.Close();
}
}
Skrevet man. d. 20. august 2012 kl. 17:29:27| #2
Arne_v
Ja arne det er sikket rigtigt, at det er et simpelt eksempel, men men, alt er jo simpelt, hvis man kan det.
Jeg har ændret, således at jeg troede, at det pegede på min database, men jeg fik fejl.
Mit sr nu sådan ud.
using System;
using System.Data.OleDb;
public class MainClass
{
public static void Main(string[] args)
{
//OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MusikDatabase\Musik.mdb");
OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;Data Source=ARNEPC3;Initial Catalog=Test;Integrated Security=SSPI;");
con.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Musik", con);
OleDbDataReader rdr = cmd.ExecuteReader();
while(rdr.Read()) {
int f1 = (int)rdr[0];
string f2 = (string)rdr[1];
Console.WriteLine(f1 + " " + f2);
}
con.Close();
}
}
Den her fejler, jeg mener stien er rigtig:
m.v.h.
Ole
Skrevet man. d. 20. august 2012 kl. 18:24:11| #3
Fjern // foran Access delen og slet SQLServer delen.
Skrevet man. d. 20. august 2012 kl. 18:24:37| #4
//OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MusikDatabase\Musik.mdb");
OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;Data Source=ARNEPC3;Initial Catalog=Test;Integrated Security=SSPI;");
->
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MusikDatabase\Musik.mdb");
Skrevet man. d. 20. august 2012 kl. 18:25:12| #5
int f1 = (int)rdr[0];
string f2 = (string)rdr[1];
skal nok ogsaa aendres til dine felter
Skrevet man. d. 20. august 2012 kl. 22:48:51| #6
Hej arne_v
Du skriverint f1 = (int)rdr[0];
string f2 = (string)rdr[1];
skal nok ogsaa aendres til dine felter
Jeg har ingen talfelter, så jeg fjernede linien f1, og rettede
linien f2 til string f1 = (string)spillested (felt i databasen)r4dr(0).
Men nej.
http://msdn.microsoft.com/ (...)(v=vs.90).aspx
Den anvisning jeg fandt var denne adr. og den forklaring var lige til at gå til, så jeg troede, at der evt. var en sådan mulighed m.h.t. mdb database
Er der mulighed for at konvetere mdb til sdf.
m.v.h.
Ole
Skrevet tir. d. 21. august 2012 kl. 04:00:52| #7
syntaxen er:
type variabelnavn = (type)readervariabel[feltnummerstartendemednul];
Skrevet tir. d. 21. august 2012 kl. 10:07:23| #8
Hej igen
Det vil ikke køre, men jeg kan nu se, at der tilsyneadende er noget med Main, da den ser sådan ud på min computer:
public static void Main(string[] args)
og der er en lille streg under Main
m.v.h.
Ole
Skrevet ons. d. 22. august 2012 kl. 03:19:01| #9
kan du poste lidt kode som viser hvor Main er placeret?
Skrevet ons. d. 22. august 2012 kl. 03:19:23| #10
og hvilken projekt type har du valgt?
Skrevet ons. d. 22. august 2012 kl. 16:49:54| #11
Hej arne_v
Jeg sender den kode:
using System;
using System.Data.OleDb;
public class MainClass
{
public static void Main(string[] args)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MusikDatabase\Musik.mdb");
// OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;Data Source=ARNEPC3;Initial Catalog=Test;Integrated Security=SSPI;");
con.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Musik", con);
OleDbDataReader rdr = cmd.ExecuteReader();
while(rdr.Read())
{
// int f1 = (int)rdr[0];
string spillested = (string)rdr[0];
Console.WriteLine(spillested + " " );
}
con.Close();
}
}
Jeg får ingen forbindelse med det her, jeg har efter bedste evne brugt det du har sendt.
m.v.h.
Ole
Skrevet tor. d. 23. august 2012 kl. 04:42:13| #12
Det er legalt C#.
Hvilken fejl faar du?
Og hvilken projekt type har du oprettet?
Skrevet fre. d. 24. august 2012 kl. 17:00:59| #13
Hej arne_v
Nu vil jeg forsøge at forklare.
Jeg har oprettet en form applikation og der har jeg skrevet den tekst.
Når jeg forsøger at køre denne tekst, for at den skulle kunne få fat i databasen, skriver programmet, at der er build error, det er helt den sædvanelige fejlmeddelelse.
Men i dag sag jeg og tossede lidt, og jeg bemærkede de her linier
under selve den aktive skærm.
------ Build started: Project: NyMusik, Configuration: Debug x86 ------
warning CS1668: Invalid search path 'C:\Programmer\Microsoft Visual Studio\VC98\lib' specified in 'LIB environment variable' -- 'Den angivne sti blev ikke fundet. '
Vil det her sige, at der er noget i Visual 2010 som jeg mangler.
Til venstre for den skærm jeg skriver koden i er der en strimmel med Data sources, denne del har jeg ikke benyttet, er det her fejlen ligger.
Håber du har toldmodighed
M.v.h.
Ole
Skrevet man. d. 27. august 2012 kl. 04:49:49| #14
Med en win form app skal du ikke have en main men en button click event og ikke skrive til console men gemme i en textbox eller lignende.
Skrevet man. d. 27. august 2012 kl. 04:50:30| #15
Den fejl lyder meget mystisk.
VC98 er Visual Studio 6.0 fra 1998.
Skrevet man. d. 27. august 2012 kl. 09:02:08| #16
Hej arne
Jeg er kommet lidt videre, du må ikke lige nu bruge tid på det her, jeg har meget travlt her til morgen, men jeg skal nok skrive mere når der er tid.
m.v.h.
Ole
Skrevet ons. d. 29. august 2012 kl. 09:01:52| #17
Hej arne
Du må undskylde mit korte svar, men jeg har lige fået 8 nye vinduer og en ny dør jeg skal have sat i huset, så jeg er lidt fraværende her nogle dage endnu.
m.v.h.
Ole
Skrevet ons. d. 29. august 2012 kl. 14:45:46| #18
Jeg kender det.
Min kone har lige koebt 32 kasser gulv som hun forventer skal laegges.
Skrevet søn. d. 16. september 2012 kl. 22:15:17| #19
Hej arne_v
Jeg mener ikke, at der er ret mange, undtagen mig, der har glæde af denne tråd, og derfor vil jeg spørge dig, om du evt. mener, at vi kunne fortsætte lidt mere privat, hvis ja, så står min private emailadr. under min profil, og du kunne sende mig en mail.
Hvis du ikke ønsker dette, fortsætter vi bare her.
m.v.h.
Ole
Skrevet søn. d. 16. september 2012 kl. 23:21:26| #20
Skrevet lør. d. 29. september 2012 kl. 21:46:11| #21
Hej
Ja der er gået lang tid, og vi er ikke færdige.
Vinduerne gik fint, det er virkeligt dejligt, men da det var på plads ---hov---, der var lige en skjult rørskade, ved kontrol, løb der 24 l fjernvarmevand ud i timen.
Entreparketgulv er savet væk, betongulv er banket væk, bryggers klinkegulv er banket væk.
Men på mandag får vi lagt nyt parketgulv, så jeg håber, at jeg snart kan være aktiv igen.
m.v.h.
Ole
Skrevet ons. d. 12. december 2012 kl. 22:26:22| #22
Hej her igen!
Nej nu opgiver jeg det her, og jeg fortsætter med at benytte
min Access database.
Arne vil du ikke nok skrive et eller andet som et svar, så
jeg kan give dig de point, du har da forsøgt at give mig et
skub.
Jeg har brugt meget tid på det her, og det ender med det samme
hele tiden.
Lige til sidst, kan man finde tabellerne i en database
oprettet i C#.
m.v.h.
Ole
Skrevet lør. d. 12. januar 2013 kl. 10:45:40| #23
Hej
Ja så må jeg selv lave et svar for at slutte denne tråd.
mvh.
Ole