Ga naar inhoud

oledb en c# is dat wel een goede combinatie


dirkR

Aanbevolen berichten

hallo,

ik zit met een probleem in onderstaande code krijg ik steeds als uitslag "no connection". Kan mme iemend zeggen hoe dat zou kunnen komen? en natuurlijk hoe we dat oplossen.

dank op voorhand.

DirkR

private void button1_Click(object sender, EventArgs e)

{

string conn = null;

OleDbConnection oledbCon;

OleDbDataAdapter oledbDataAdapter;

DataSet ds = new DataSet();

string sql = null;

conn = "Provider= Micosoft.Jet.Oledb.4.0;Data Source = C:\\Adressen.mdb;";

sql = "SELECT * FROM Klanten";

oledbCon = new OleDbConnection(conn);

try{

oledbCon.Open();

oledbDataAdapter = new OleDbDataAdapter(sql,oledbCon);

oledbDataAdapter.Fill(ds,"Klanten");

for( int x = 0; x<=ds.Tables[0].Rows.Count-1;x++)

{

MessageBox.Show(ds.Tables[0].Rows[x].ItemArray[1].ToString());

}

oledbDataAdapter.Dispose();

oledbCon.Close();

}

catch(Exception ex){

MessageBox.Show("no connection");

}

}

}

}

mijn databank staat in c:\ ***** Thanks*****

Link naar reactie
Delen op andere sites

Wat kweezie wabbit aangeeft is inderdaad de eerste stap om eens te kijken wat de foutmelding aangeeft.

Ik wil ook meegeven dat wat je hier doet niet erg slim is. In een methode een database connectie maken.

Ik zou proberen om een losse classe te gebruiken waarin je je database connectie maakt. En de classe mee te nemen in de classe waar deze methode in vermeld staat.

Zo voorkom je een heleboel simultane connecties naar je database(access) bestand. Zo hoef je ook niet een heleboel code te herschrijven op het moment dat je locatie naar je bestand veranderd.

De classe zou ik een bepaalde methodes meegeven waarmee je queries kan draaien. Een voorbeeld van zo'n classe zou kunnen zijn (let op! dit is geen C# code maar pseudo!):

class db{
private connectionString = "Provider= Micosoft.Jet.Oledb.4.0;Data Source = C:\\Adressen.mdb;";
private connection;


public void __construct(){
 this.connection = new OleDbConnection(this.connectionString);

}

public DataSet select(String sql){
 this.open_connection();
 DataSet ds = new DataSet();
 oledbDataAdapter = new OleDbDataAdapter(sql, this.connection)

 //hier de rest van de SELECT code op je oleDB

 this.close_connection();
}


private void open_connection(){
 try{
  this.connection.Open();
 }catch(Exception e){
  MessageBox.Show("DB connection failed: " +e)
 }
}
private void close_connection(){
 try{
  this.connection.Close();
 }catch(Exception e){
  MessageBox.Show(e);
 }
}
}

Wil je dan namelijk je (oledb) database bevragen hoef je alleen nog maar dit te doen:

DataSet ds = db.select("SELECT * FROM ???");

Misschien zijn er ook wel al C# (oledb) database classes te vinden die je zo in je code kunt importeren en gebruiken (probeer maar eens te zoeken op github.com of bitbucket.com, daar staan denk ik genoeg "open-source" mogelijkheden)

Misschien zijn er nog wel veel slimmere classes die meer als een ORM werken (Object Relational Mapping). Die zou je dan zo kunnen bevragen:

DataSet ds = orm.get("table", "filterStatements");

aangepast door leroy
Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.