GhastlyMIB
Gebruiker
- Lid geworden
- 5 jun 2007
- Berichten
- 368
Hey,
ik heb jouw klasse herschreven. Ik heb m getest en hij werkt. (Insert en Delete en Select)
Maak een KOPIE van jouw bestaande code, mocht het niet werken!
De update methode heb ik NIeT aangepast, omdat ik de jouwe niet snap. Want ik heb SET velden en waardes , en ik heb WHERE velden en waardes... nodig...
Laat maar weten of het werkt, en btw, als de update niet werkt en aangepast moet worden, zeg maar, dan zal ik m aanpassen.
Succes,
Mathijs
ik heb jouw klasse herschreven. Ik heb m getest en hij werkt. (Insert en Delete en Select)
Maak een KOPIE van jouw bestaande code, mocht het niet werken!
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Collections;
namespace DatabaseApplication
{
class DatabaseManager
{
private string _source = @"C:\meetSysteem.mdb";
private OleDbConnection _link;
public DatabaseManager()
{
//- Een instantie maken van een sql connectie
_link = new OleDbConnection(GetConnectionString());
}
public string GetConnectionString()
{
return @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _source;
}
public ArrayList Select(string table, string ordering)
{
return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
}
public bool Toevoegen(string table, string[] schema, params object[] fields)
{
if (schema.Length != fields.Length)
throw new ArgumentException("The number of fields does not match the size of the schema.");
if (schema.Length <= 0)
throw new ArgumentException("You need minimal one field to be added.");
string query = "INSERT INTO [" + table + "] (";
foreach (string item in schema)
query += "[" + item + "],";
//- Laatste comma verwijderen en de waardes toevoegen
query = query.Remove(query.Length - 1, 1) + ") VALUES (";
for (int n = 0; n < fields.Length; n++)
query += "@VALUE" + n.ToString() + ",";
query = query.Remove(query.Length - 1, 1) + ")";
OleDbCommand sqlCommand = new OleDbCommand(query, _link);
for (int n = 0; n < fields.Length; n++)
sqlCommand.Parameters.AddWithValue("@VALUE" + n.ToString(), fields[n]);
return ExplicitNonQuery(sqlCommand);
}
public bool Verwijderen(string table, string[] keys, params object[] fields)
{
if (keys.Length != fields.Length)
throw new ArgumentException("The number of fields does not match the size of the schema.");
if (keys.Length <= 0)
throw new ArgumentException("You need minimal one condition to be removed.");
string query = "DELETE FROM [" + table + "] WHERE ";
for (int n = 0; n < keys.Length; n++)
{
query += "[" + keys[n] + "]=@VALUE" + n.ToString() + " AND ";
}
query = query.Remove(query.Length - 5, 5);
OleDbCommand sqlCommand = new OleDbCommand(query, _link);
for (int n = 0; n < fields.Length; n++)
sqlCommand.Parameters.AddWithValue("@VALUE" + n.ToString(), fields[n]);
return ExplicitNonQuery(sqlCommand);
}
public bool Update(string table, string[] schema, int[] keys, params object[] fields)
{
// LETTERLIJK JOUW CODE!
if (schema.Length != fields.Length)
throw new ArgumentException("The number of fields does not match the size of the schema.");
string query = "UPDATE " + table + " SET ";
for (int i = 0; i < fields.Length; i++)
{
bool is_key = false;
for (int j = 0; j < keys.Length; j++)
if (keys[j] == i)
is_key = true;
if (!is_key)
{
query += schema[i] + " = " + Formatted(fields[i]);
if (i != fields.Length - 1)
query += ",";
}
}
query += " WHERE ";
for (int i = 0; i < keys.Length; i++)
{
query += schema[keys[i]] + " = " + Formatted(fields[keys[i]]);
if (i != keys.Length - 1)
query += " AND ";
}
return this.ExplicitNonQuery(query);
//-
}
public bool ExplicitNonQuery(string query)
{
return ExplicitNonQuery(new OleDbCommand(query, _link));
}
//Deze methode zorgt ervoor dat de functie: 'ExecuteNonQuery' weet waar hij de verbinding moet
//openen en dichten en wat hij met de verbinding moet doen.
public bool ExplicitNonQuery(OleDbCommand sqlCommand)
{
try
{
_link.Open();
bool vergelijk = false;
if (sqlCommand.ExecuteNonQuery() > 0)
vergelijk = true;
_link.Close();
return vergelijk;
}
catch
{
return false;
}
}
private ArrayList ExplicitQuery(string query)
{
try
{
ArrayList gebruikersnaam = new ArrayList();
OleDbCommand sqlCommand = new OleDbCommand(query, _link);
_link.Open();
OleDbDataReader reader = sqlCommand.ExecuteReader();
while (reader.Read())
{
ArrayList a = new ArrayList();
for (int i = 0; i < reader.FieldCount; i++)
a.Add(reader[i]);
gebruikersnaam.Add(a);
}
reader.Close();
reader.Dispose();
reader = null;
_link.Close();
return gebruikersnaam;
}
catch
{
return new ArrayList();
}
}
private string Formatted(object o)
{
return o.ToString();
}
}
}
De update methode heb ik NIeT aangepast, omdat ik de jouwe niet snap. Want ik heb SET velden en waardes , en ik heb WHERE velden en waardes... nodig...
Laat maar weten of het werkt, en btw, als de update niet werkt en aangepast moet worden, zeg maar, dan zal ik m aanpassen.
Succes,
Mathijs
Laatst bewerkt: