Abstrace classe

Status
Niet open voor verdere reacties.

savant11

Gebruiker
Lid geworden
7 jan 2008
Berichten
153
Ik heb een abstracte classe:

Code:
using System;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DatabaseApplication;
using System.Collections.Generic;
using System.Data.Sql;

namespace DatabaseApplication
{
   
    /// De klasse is abstract, gezien de methoden: Toevoegen, update en verwijderen voor algemeen gebruik zijn, dit
    /// wil zeggen dat meerdere klassen van deze methoden gebruik maken. 
    public abstract  class DatabaseManager 
       
    {
        

        //DataRow drNewRow = dtDataTable.NewRow();
        Gebruiker gebruiker = new Gebruiker();
        public DataTable m_dtkastCollectie = new DataTable();
        public DataTable m_dtkast = new DataTable();
        public DataTable m_dtgebruiker = new DataTable();
        public DataTable m_dtkastSoort = new DataTable();
        public DataTable m_dtboek = new DataTable();
        OleDbConnection conn = null;// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
        OleDbDataReader reader = null; //
        OleDbCommand command = null; //Zorgt ervoor dat Queries kunnen worden uitgevoerd.
        OleDbDataAdapter dataAdapter;
        //private SqlDataReader reader;
        //private SqlCommand command;
        //private SqlConnection connection;
        private string connectionString;
        int m_rowPosition = 0;
            



       
        

        
        //ConnectieString
        public string GetConnectionString()
        {
            string connString = @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";
                
            
           
             
            return connString;  
       

            //create the database connection
            OleDbConnection conn = new OleDbConnection(GetConnectionString());
            OleDbCommand aCommand;
            OleDbDataReader aReader;


            
            try
            {

                conn = new OleDbConnection();
                conn.Open(); 
               
                //OleDbCommand cmd = new OleDbCommand(conn); 
            }

            
            catch (Exception e)
            {
                        Console.WriteLine("Error:" + e); 
                        //System.Windows.Forms.MessageBox.Show(e.Message, "Database access error");
            }

        
            finally
            {
                conn.Close();
                reader.Close();
                
            }

           
    
        

        
        

}
        //Einde verbinding met database

        public ArrayList Select(string table, string ordering)
        {
            return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
        }

        

      //Methode Toevoegen
       public bool   Toevoegen(string table, string[] schema,  params object[] fields )
        {
           
            
            MessageBox.Show("DatabaseManager::Toevoegen() invoked", "DatabaseManager");
            //m_cnADONewConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\meetSysteem.mdb";
            OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(dataAdapter);
            Gebruiker nieuweGebruiker = new Gebruiker();
            GebruikerView nieuweGebruikerView = new GebruikerView();
            //Begin opslaan
            DataRow drNewRow = m_dtgebruiker.NewRow();

            DataTable dtgebruiker = new DataTable();
            DataTable dtDataTable; //new DataTable();
            //dtDataTable = dsDataSet.Tables[0];
            
            try
            {
                
                m_dtgebruiker.Rows.Add(drNewRow);

                
                drNewRow["gebruikersnaam"] = "";
                drNewRow["email"] = "hallo";
                drNewRow["wachtwoord"] = "mooi";
                drNewRow["wachtwoord"] = "mooi";

                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = m_dtgebruiker.Rows.Count - 1;
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                MessageBox.Show("DatabaseManager::Toevoegen() oeps", "DatabaseManager");
            }



            for (int i = 1; i < fields.Length; i++)
            {
                Console.Write(fields[i] + "");
            }
            Console.WriteLine();

          
            //Einde opslaan

            if (schema.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the size of the schema.");

            string query = "INSERT INTO " + table + " (";
            for (int i = 0; i < schema.Length; i++)
            {
                query += schema[i];
                if (i != schema.Length - 1)
                    query += ",";
            }
            query += ") VALUES (";
            for (int i = 0; i < fields.Length; i++)
            {
                query += Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += ",";
            }
            query += ")";

              return this.ExplicitNonQuery(query);

           

        }



        

       //Methode verwijderen
        public bool Verwijderen(string table, string[] keys, params object[] fields)
        {

            if (!(m_dtgebruiker.Rows.Count == 0))
            {
                m_dtgebruiker.Rows[m_rowPosition].Delete();
                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = 0;
                //this.ShowCurrentRecord();
            }


            if (keys.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the number of keys.");
            string query = "DELETE FROM " + table + " WHERE ";
            for (int i = 0; i < fields.Length; i++)
            {
                query += keys[i] + " = " + Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += " AND ";
            }
            return this.ExplicitNonQuery(query);
        }

       //Methode data updaten
        public bool Update(string table, string[] schema, int[] keys, params object[] fields)
        {
            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)
        {
            try
            {
                this.command.CommandText = query;
                return this.command.ExecuteNonQuery() > 0;
            }
            catch (SqlException ex)
            {
                return false;
            }
        }

        
        public ArrayList ExplicitQuery(string query)
        {
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }
        }
         



        protected abstract string Formatted(object o);


    }
}

Maar hoe ik nu bijvoorbeeld de methode: Toevoegen gebruiken in een formulier met drie textvelden: 'gebruikersnaam' , ' email' en ' wachtwoord' . En dan is er een knop opslaan die ervoor zorgt dat het in de database komt te staan?

Alstublieft. Is er iemand die mij wat tips kan geven?
 
Je moet dan eerst een class aanmaken die overerft van deze abstracte class. Als je dan hiervan een instance aanmaakt in je form, dan kun je deze instance gebruiken om je functies aan te roepen.
 
Hoi, dit is de view: Gebruiker.cs: Door middel van de knop ‘toevoegen’ moet er dus een nieuwe gebruiker aan toegevoegd kunnen worden.


Code:
//using DatabaseApplcication;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
using DatabaseApplication;

namespace DatabaseApplication
{
    /// <summary>
    /// Klasse NieuweGebruikerView. De vieuw erft al van een andere base klasse: "Form". 
    /// Maar als de button "Toevoegen geactiveerd wordt moet wel de methode "Toevoegen" uit de 
    /// klasse DatabaseManager aangeropen worden.
    /// 
    /// </summary>

   
        partial class GebruikerView : Form
        {
            Gebruiker temp = new Gebruiker();
           
           
            DatabaseConfig databaseConfig = new DatabaseConfig();
           

            int m_rowPosition = 0;



            public GebruikerView()
            {

                InitializeComponent();
                Gebruiker temp = new Gebruiker();
            }
            private void NieuweGebruiker_Load(object sender, EventArgs e)
            {


                                DatabaseConfig databaseConfig = new DatabaseConfig();

            }
            private void NieuweGebruiker_FormClosing(object sender, System.EventArgs e)
            {
                //m_cnADONewConnection.Close();
                //m_cnADONewConnection.Dispose();

            }

            private void ShowCurrentRecord()
            {
                
              
            }

            //De button om data toe te voegen
            public  void button1_Click(object sender, System.EventArgs e)
            {
              
                if(String .IsNullOrEmpty(this.txtGebruikersnaam.Text)) 
                {
                    MessageBox.Show("Hey je moet wel iets intikken heh!!", "Error");//,
                        
                    return;
                }
                //Hardcode gebruiker met gegevens wordt naar NieuweGebruiker_controller gestuurd.
                

                
                temp.setEmail(txtEmail.Text);
                temp.setWachtwoord(txtWachtwoord.Text);
                temp.setWachtwoord(txtWachtwoordNogmaals.Text);
                temp.setGebruikersnaam(txtGebruikersnaam.Text);

                Gebruiker_controller gebruiker_controller = new Gebruiker_controller();
                DatabaseManager databaseManager = new NieuweGebruiker_controller();
                databaseManager.Toevoegen();
                
               
               
                
              



                
            }

            
            private void textBox2_TextChanged(object sender, EventArgs e)
            {

            }

            private void txtWachtwoord_TextChanged(object sender, EventArgs e)
            {

            }

            private void txtWachtwoordNogmaals_TextChanged(object sender, EventArgs e)
            {
                
            }

            private void txtEmail_TextChanged(object sender, EventArgs e)
            {
               
            }

            private void label1_Click(object sender, EventArgs e)
            {

            }

            private void button1_Click_1(object sender, EventArgs e)
            {
                //NieuweGebruiker temp = new NieuweGebruiker();

                MessageBox.Show("Gebruikersnaam: " + temp.getGebruikersnaam());

                MessageBox.Show("Email: " + temp.getEmail());

                MessageBox.Show("Wachtwoord: " + temp.getWachtwoord());
            }
        }
    }
//}

Maar aangezien er al staat:
Code:
 partial class GebruikerView : Form

Hoe moet ik dan de methode ‘Toevoegen’ in deze classe aanroepen? Bedoel ik kan nu niet neerzetten:

Code:
partial class GebruikerView : DatabaseManager
of zelfs:
Code:
 partial class GebruikerView : Form, DatabaseManager


De methode ‘Toevoegen’ is ook van het type: ‘bool’. Kan je mischien wat specifieker zijn.

Alvast bedankt.
 
Hoi,

Ik heb dit ook al geprobeerd:

Code:
public override bool Toevoegen(string table, string[] schema,  params object[] fields )

Maar dan krijg ik de volgende error:
Code:
Error	2'DatabaseApplication.DatabaseManager.Toevoegen(string, string[], object[])': no suitable method found to override	C:\Users\savant\Documents\Visual Studio 2008\Projects\DatabaseApplication3\DatabaseApplication\DatabaseManager.cs	131	29	DatabaseApplication
 
Het volgende moet je doen.

Code:
Public Class1:DatabaseManager
{
//Relevante code die je wilt doen
}

Dan in de View:

Code:
Class1 c = New Class1
c.Toevoegen()
 
Hoi,

Ja, dat heb ik dus ook al geprobeerd:

Dit is de classe: Gebruiker_controller:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
using System.IO;
//using DatabaseApplication;
using DatabaseApplication;


namespace DatabaseApplication
{
   public  class Gebruiker_controller:DatabaseManager 
    {
       GebruikerView gebruiker = new GebruikerView();
       
       // Constructor
       public Gebruiker_controller()
       {
       }

       public static void databaseFunctie()
       {
           

           ArrayList gebruikersnaam = new ArrayList();
           ArrayList wachtwoord = new ArrayList();
           ArrayList email = new ArrayList();

       }    

       public static void ToevoegenDatabaseManager(DatabaseManager d)              
       {


           
           Gebruiker gebruiker = new Gebruiker();
           Gebruiker_controller gebruiker_controller = new Gebruiker_controller();

           
            String table = "gebruiker";
            String[] schema = new String[3];
            schema[0] = "id";
            schema[1] = "gebruikersnaam";
            schema[2] = "wachtwoord";
            schema[3] = "email";
            object[] fields = new String[3];
            fields[0] = "";
            fields[1] = gebruiker.getGebruikersnaam();
            fields[2] = gebruiker.getWachtwoord();
            fields[3] = gebruiker.getEmail();
           
            d.Toevoegen(table, schema, fields);
                
       }

       public override bool Toevoegen(string table, string[] schema, params object[] fields)
      {
         
       }

       

       // Zorgt ervoor dat automatisch de velden in de tabel worden herkent als:leeg, bool,int, string 
       protected override string Formatted(object o)
        {
            if (o is System.DBNull)
                return "NULL";
            if (o is bool)
                return (bool)o ? "1" : "0";
            if (o is int)
                return ((int)o).ToString();
            if (o is string)
                return "'" + (string)o + "'";
            return o.ToString();  // will probably result in an error.
        }

      public void nieuweGebruiker(DatabaseManager d)

        {
                       

       
       
       } 
    }
}

En dan heb ik dus:

Code:
  public override bool Toevoegen(string table, string[] schema, params object[] fields)
      {
       }

En de methode Toevoegen van de classe: DatabaseManager heb ik nu virtual, dus op deze manier:

Code:
public virtual bool Toevoegen(string table, string[] schema,  params object[] fields )

En ik heb nu in de vieuw staan:

Code:
Gebruiker_controller gebruiker_controller = new Gebruiker_controller();
                gebruiker_controller.Toevoegen();

Maar nu geeft ie de error:
Code:
Error	12	'DatabaseApplication.Gebruiker_controller.Toevoegen(string, string[], params object[])': not all code paths return a value	C:\Users\savant\Documents\Visual Studio 2008\Projects\DatabaseApplication3\DatabaseApplication\Gebruiker_controller.cs	74	29	DatabaseApplication

Hij bitcht dus bij de Gebruiker_controller over deze regel:

Code:
public override bool Toevoegen(string table, string[] schema, params object[] fields)
      {
       }
 
Hoi,

ja een bool geeft een true of een false terug:

Dus logisch dat ie daar over klaagt. Ik heb nu staan:

Code:
       public override bool Toevoegen(string table, string[] schema, params object[] fields)
      {
          return true;
          
       }

Maar dan klaagt ie nog steeds over de classe: gebruiker_controller, dit stukje:

Code:
 Gebruiker_controller gebruiker_controller = new Gebruiker_controller();
 gebruiker_controller.Toevoegen();

Dan geeft ie de error melding:

Code:
Error	15	No overload for method 'Toevoegen' takes '0' arguments	C:\Users\savant\Documents\Visual Studio 2008\Projects\DatabaseApplication3\DatabaseApplication\GebruikerView.cs	100	17	DatabaseApplication
 
Laatst bewerkt:
Code:
gebruiker_controller.Toevoegen();

Je moet natuurlijk wel argumenten meegeven, je hebt immers gedeclareerd:

Code:
      public override bool Toevoegen(string table, string[] schema, params object[] fields)
      {
          return true;
          
       }

De agrumenten:
- string table,
- string[] schema
- params object[] fields
 
Hoi,

ja, bedankt voor de tip.

Maar ik heb het nu dus, op deze manier:

Code:
gebruiker_controller.Toevoegen(  string table, string[] schema,params object[] fields;  );

Maar dat werkt dus niet.
 
Hoi,

ja, bedankt voor de tip.

Maar ik heb het nu dus, op deze manier:

Code:
gebruiker_controller.Toevoegen(  string table, string[] schema,params object[] fields;  );

Maar dat werkt dus niet.

Heb je nog andere tips? Of hoe moet ik het anders doen? Alvast bedankt
 
Hoi,

ja, bedankt voor de tip.

Maar ik heb het nu dus, op deze manier:

Code:
gebruiker_controller.Toevoegen(  string table, string[] schema,params object[] fields;  );

Maar dat werkt dus niet.

Dat klopt dat het niet werkt want zoals jabber al aangeeft moet je argumenten meegeven.

public override bool Toevoegen(string table, string[] schema, params object[] fields)
{
return true;

}

Het eerste argument dat je moet meegeven is van het type String
dus dan wordt de aanroep

string argument1 = "voorbeeld";
gebruiker_controller.Toevoegen( argument1 ,....

het tweede argument is van het type string array dus dan moet je een string array decalren en meegeven

string[] argument2 = new string[]{"voor","beeld"};
gebruiker_controller.Toevoegen( argument1,argument2 ,....
enzovoort
 
Hoi Don,

echt enorm bedankt voor je tip.

Maar nu krijg ik de volgenden foutmeling:

Code:
 this.command.CommandText = query;

en dan bitch ie met: Object reference not set to an instance of an object.

Code:
using System;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DatabaseApplication;
using System.Collections.Generic;
using System.Data.Sql;

namespace DatabaseApplication
{
   
    /// De klasse is abstract, gezien de methoden: Toevoegen, update en verwijderen voor algemeen gebruik zijn, dit
    /// wil zeggen dat meerdere klassen van deze methoden gebruik maken. 
    public abstract  class DatabaseManager:System.Object  //{ public DatabaseManager(string foo)  
       
    {
        

        //DataRow drNewRow = dtDataTable.NewRow();
        //Gebruiker gebruiker = new Gebruiker();
        //public DataTable m_dtkastCollectie = new DataTable();
        //public DataTable m_dtkast = new DataTable();
        public DataTable m_dtgebruiker = new DataTable();
        //public DataTable m_dtkastSoort = new DataTable();
        //public DataTable m_dtboek = new DataTable();
        OleDbConnection conn = null;// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
        OleDbDataReader reader = null; //
        OleDbCommand command = null; //Zorgt ervoor dat Queries kunnen worden uitgevoerd.
        OleDbDataAdapter dataAdapter;
        //private SqlDataReader reader;
        //private SqlCommand command;
        //private SqlConnection connection;
        private string connectionString;
        int m_rowPosition = 0;

        //De gebruikte variabelen in deze klasse:
        string table;
        string[] schema;
        object[] fields;

        //Einde van dit commentaar




     
		
            



       
       
        

        
        //ConnectieString
        public string GetConnectionString()
        {
            string connString = @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";
                
            
            
             
            return connString;  
       

            //create the database connection
            OleDbConnection conn = new OleDbConnection(GetConnectionString());
            OleDbCommand aCommand;
            OleDbDataReader aReader;


            
            try
            {

                conn = new OleDbConnection();
                conn.Open(); 
               
                //OleDbCommand cmd = new OleDbCommand(conn); 
            }

            
            catch (Exception e)
            {
                        Console.WriteLine("Error:" + e); 
                        //System.Windows.Forms.MessageBox.Show(e.Message, "Database access error");
            }

        
            finally
            {
                conn.Close();
                reader.Close();
                
            }

           
    
        

        
        

}
        //Einde verbinding met database

        public ArrayList Select(string table, string ordering)
        {
            return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
        }

        

      //Methode Toevoegen
       public  bool Toevoegen(string table, string[] schema,  params object[] fields )
        {

            MessageBox.Show("DatabaseManager::Toevoegen() Er valt wat te testen", "DatabaseManager");
            MessageBox.Show("DatabaseManager::Toevoegen() ja, dat is goed", "DatabaseManager");
            //m_cnADONewConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\meetSysteem.mdb";
            OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(dataAdapter);
            Gebruiker nieuweGebruiker = new Gebruiker();

           DataTable m_dtgebruiker = new DataTable();

            GebruikerView nieuweGebruikerView = new GebruikerView();
            //Begin opslaan
            DataRow drNewRow = m_dtgebruiker.NewRow();

            DataTable dtgebruiker = new DataTable();
            DataTable dtDataTable; //new DataTable();
            //dtDataTable = dsDataSet.Tables[0];
            
            //table.Contains("gebruiker");
            //fields.SetValue(1, 2, 3);
            try
            {
                
                m_dtgebruiker.Rows.Add(drNewRow);

                //Lucas
                //foreach columnName in anObject.getCOlumnNames() {
                    //drNewRow[columnName] = anObject.getColumnName(geb);
               // }
                drNewRow["gebruikersnaam"] = "Goededag";
                drNewRow["email"] = "hallo";
                drNewRow["wachtwoord"] = "mooi";
                drNewRow["wachtwoord"] = "mooi";

                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = m_dtgebruiker.Rows.Count - 1;
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                MessageBox.Show("DatabaseManager::Toevoegen() oeps", "DatabaseManager");
            }



            for (int i = 1; i < fields.Length; i++)
            {
                Console.Write(fields[i] + "");
            }
            Console.WriteLine();

          
            //Einde opslaan

            if (schema.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the size of the schema.");

            string query = "INSERT INTO " + table + " (";
            for (int i = 0; i < schema.Length; i++)
            {
                query += schema[i];
                if (i != schema.Length - 1)
                    query += ",";
            }
            query += ") VALUES (";
            for (int i = 0; i < fields.Length; i++)
            {
                query += Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += ",";
            }
            query += ")";

              return this.ExplicitNonQuery(query);

           
          

        }



        

       //Methode verwijderen
        public bool Verwijderen(string table, string[] keys, params object[] fields)
        {

            
            if (!(m_dtgebruiker.Rows.Count == 0))
            {
                m_dtgebruiker.Rows[m_rowPosition].Delete();
                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = 0;
                //this.ShowCurrentRecord();
            }
              


            if (keys.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the number of keys.");
            string query = "DELETE FROM " + table + " WHERE ";
            for (int i = 0; i < fields.Length; i++)
            {
                query += keys[i] + " = " + Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += " AND ";
            }
            return this.ExplicitNonQuery(query);
        }

       //Methode data updaten
        public bool Update(string table, string[] schema, int[] keys, params object[] fields)
        {
            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);
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns></returns>
        public void  query()
        {
            //return true;

            //string query = new string();
            


        }

        
        public bool ExplicitNonQuery(string query)
        {

           
               
            try
            {
                this.command.CommandText = query;
                return this.command.ExecuteNonQuery() > 0;
              

                
            }
            catch (SqlException ex)
            {
                return false;
            }
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure to obtain row data.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns>An ArrayList corresponding to the selected rows of the query or stored procedure.</returns>
        
        public ArrayList ExplicitQuery(string query)
        {
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }
        }
         

        public void schrijfNaarDBNieuweGebruiker(String gebruikersnaam , String wachtwoord, String email)
        {
            /*
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }*/




        }



        /// &ltsummary>
        /// A method for turning an object into a string, based on its type.
        /// </summary>
        /// &ltparam name="o">The object to be formatted</param>
        /// &ltreturns>A string corresponding to an SQL interpretation of the object.</returns>
        protected abstract string Formatted(object o);
        object o = new object();

    
    
    
        //protected string Formatted(object o)
        //{
            //return null;
        //}


    }
}

en dan zit de de fout in deze methode:

Code:
 public bool ExplicitNonQuery(string query)
        {

           
               
            try
            {
                this.command.CommandText = query;
                return this.command.ExecuteNonQuery() > 0;
              

                
            }
            catch (SqlException ex)
            {
                return false;
            }
        }
 
je hebt command wel gedeclareerd maar nog geen nieuwe instance van gemaakt.

Dus vervang OleDbCommand command = null;
voor
OleDbCommand command = new OleDbCommand();
 
Hoi Don,

thx again. Ja, beetje stom van me. Ik heb het nu dus zo:

Code:
using System;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DatabaseApplication;
using System.Collections.Generic;
using System.Data.Sql;

namespace DatabaseApplication
{
   
    /// De klasse is abstract, gezien de methoden: Toevoegen, update en verwijderen voor algemeen gebruik zijn, dit
    /// wil zeggen dat meerdere klassen van deze methoden gebruik maken. 
    public abstract  class DatabaseManager:System.Object  //{ public DatabaseManager(string foo)  
       
    {
        

        //DataRow drNewRow = dtDataTable.NewRow();
        //Gebruiker gebruiker = new Gebruiker();
        //public DataTable m_dtkastCollectie = new DataTable();
        //public DataTable m_dtkast = new DataTable();
        public DataTable m_dtgebruiker = new DataTable();
        //public DataTable m_dtkastSoort = new DataTable();
        //public DataTable m_dtboek = new DataTable();
        OleDbConnection conn = new OleDbConnection();// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
        OleDbDataReader reader = null; //
        OleDbCommand command = new OleDbCommand();  //Zorgt ervoor dat Queries kunnen worden uitgevoerd.
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
        //private SqlDataReader reader;
        //private SqlCommand command;
        //private SqlConnection connection;
        private string connectionString;
        int m_rowPosition = 0;

        //De gebruikte variabelen in deze klasse:
        string table;
        string[] schema;
        object[] fields;

        //Einde van dit commentaar




     
		
            



       
       
        

        
        //ConnectieString
        public string GetConnectionString()
        {
            string connString = @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";
                
            
            
             
            return connString;  
       

            //create the database connection
            OleDbConnection conn = new OleDbConnection(GetConnectionString());
            OleDbCommand aCommand;
            OleDbDataReader aReader;


            
            try
            {

                conn = new OleDbConnection();
                conn.Open(); 
               
                //OleDbCommand cmd = new OleDbCommand(conn); 
            }

            
            catch (Exception e)
            {
                        Console.WriteLine("Error:" + e); 
                        //System.Windows.Forms.MessageBox.Show(e.Message, "Database access error");
            }

        
            finally
            {
                conn.Close();
                reader.Close();
                
            }

           
    
        

        
        

}
        //Einde verbinding met database

        public ArrayList Select(string table, string ordering)
        {
            return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
        }

        

      //Methode Toevoegen
       public  bool Toevoegen(string table, string[] schema,  params object[] fields )
        {

            MessageBox.Show("DatabaseManager::Toevoegen() Er valt wat te testen", "DatabaseManager");
            MessageBox.Show("DatabaseManager::Toevoegen() ja, dat is goed", "DatabaseManager");
            //m_cnADONewConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\meetSysteem.mdb";
            OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(dataAdapter);
            Gebruiker nieuweGebruiker = new Gebruiker();

           DataTable m_dtgebruiker = new DataTable();

            GebruikerView nieuweGebruikerView = new GebruikerView();
            //Begin opslaan
            DataRow drNewRow = m_dtgebruiker.NewRow();

            DataTable dtgebruiker = new DataTable();
            DataTable dtDataTable; //new DataTable();
            //dtDataTable = dsDataSet.Tables[0];
            
            //table.Contains("gebruiker");
            //fields.SetValue(1, 2, 3);
            try
            {
                
                m_dtgebruiker.Rows.Add(drNewRow);

                //Lucas
                //foreach columnName in anObject.getCOlumnNames() {
                    //drNewRow[columnName] = anObject.getColumnName(geb);
               // }
                drNewRow["gebruikersnaam"] = "Goededag";
                drNewRow["email"] = "hallo";
                drNewRow["wachtwoord"] = "mooi";
                drNewRow["wachtwoord"] = "mooi";

                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = m_dtgebruiker.Rows.Count - 1;
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                MessageBox.Show("DatabaseManager::Toevoegen() oeps", "DatabaseManager");
            }



            for (int i = 1; i < fields.Length; i++)
            {
                Console.Write(fields[i] + "");
            }
            Console.WriteLine();

          
            //Einde opslaan

            if (schema.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the size of the schema.");

            string query = "INSERT INTO " + table + " (";
            for (int i = 0; i < schema.Length; i++)
            {
                query += schema[i];
                if (i != schema.Length - 1)
                    query += ",";
            }
            query += ") VALUES (";
            for (int i = 0; i < fields.Length; i++)
            {
                query += Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += ",";
            }
            query += ")";

              return this.ExplicitNonQuery(query);

           
          

        }



        

       //Methode verwijderen
        public bool Verwijderen(string table, string[] keys, params object[] fields)
        {

            
            if (!(m_dtgebruiker.Rows.Count == 0))
            {
                m_dtgebruiker.Rows[m_rowPosition].Delete();
                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = 0;
                //this.ShowCurrentRecord();
            }
              


            if (keys.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the number of keys.");
            string query = "DELETE FROM " + table + " WHERE ";
            for (int i = 0; i < fields.Length; i++)
            {
                query += keys[i] + " = " + Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += " AND ";
            }
            return this.ExplicitNonQuery(query);
        }

       //Methode data updaten
        public bool Update(string table, string[] schema, int[] keys, params object[] fields)
        {
            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);
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns></returns>
        
        
        public bool ExplicitNonQuery(string query)
        {

           
               
            try
            {
                this.command.CommandText = query;
                return this.command.ExecuteNonQuery() > 0;
              

                
            }
            catch (SqlException ex)
            {
                return false;
            }
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure to obtain row data.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns>An ArrayList corresponding to the selected rows of the query or stored procedure.</returns>
        
        public ArrayList ExplicitQuery(string query)
        {
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }
        }
         

        public void schrijfNaarDBNieuweGebruiker(String gebruikersnaam , String wachtwoord, String email)
        {
            /*
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }*/




        }



        /// &ltsummary>
        /// A method for turning an object into a string, based on its type.
        /// </summary>
        /// &ltparam name="o">The object to be formatted</param>
        /// &ltreturns>A string corresponding to an SQL interpretation of the object.</returns>
        protected abstract string Formatted(object o);
        object o = new object();

    
    
    
        //protected string Formatted(object o)
        //{
            //return null;
        //}


    }
}

Maar dan zegt ie bij dit stukje:

Code:
  return this.command.ExecuteNonQuery() > 0;

ExecuteNonQuery: Connection property has not been initialized.

En ik heb bij OleDbDataAdapter , dit neergezet:

Code:
 OleDbDataAdapter dataAdapter = new OleDbDataAdapter();

Heb jij nog suggesties?

Alvast bedankt
 
Hoi Don,

thx again. Ja, beetje stom van me. Ik heb het nu dus zo:

Code:
using System;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DatabaseApplication;
using System.Collections.Generic;
using System.Data.Sql;

namespace DatabaseApplication
{
   
    /// De klasse is abstract, gezien de methoden: Toevoegen, update en verwijderen voor algemeen gebruik zijn, dit
    /// wil zeggen dat meerdere klassen van deze methoden gebruik maken. 
    public abstract  class DatabaseManager:System.Object  //{ public DatabaseManager(string foo)  
       
    {
        

        //DataRow drNewRow = dtDataTable.NewRow();
        //Gebruiker gebruiker = new Gebruiker();
        //public DataTable m_dtkastCollectie = new DataTable();
        //public DataTable m_dtkast = new DataTable();
        public DataTable m_dtgebruiker = new DataTable();
        //public DataTable m_dtkastSoort = new DataTable();
        //public DataTable m_dtboek = new DataTable();
        OleDbConnection conn = new OleDbConnection();// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
        OleDbDataReader reader = null; //
        OleDbCommand command = new OleDbCommand();  //Zorgt ervoor dat Queries kunnen worden uitgevoerd.
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
        //private SqlDataReader reader;
        //private SqlCommand command;
        //private SqlConnection connection;
        private string connectionString;
        int m_rowPosition = 0;

        //De gebruikte variabelen in deze klasse:
        string table;
        string[] schema;
        object[] fields;

        //Einde van dit commentaar




     
		
            



       
       
        

        
        //ConnectieString
        public string GetConnectionString()
        {
            string connString = @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";
                
            
            
             
            return connString;  
       

            //create the database connection
            OleDbConnection conn = new OleDbConnection(GetConnectionString());
            OleDbCommand aCommand;
            OleDbDataReader aReader;


            
            try
            {

                conn = new OleDbConnection();
                conn.Open(); 
               
                //OleDbCommand cmd = new OleDbCommand(conn); 
            }

            
            catch (Exception e)
            {
                        Console.WriteLine("Error:" + e); 
                        //System.Windows.Forms.MessageBox.Show(e.Message, "Database access error");
            }

        
            finally
            {
                conn.Close();
                reader.Close();
                
            }

           
    
        

        
        

}
        //Einde verbinding met database

        public ArrayList Select(string table, string ordering)
        {
            return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
        }

        

      //Methode Toevoegen
       public  bool Toevoegen(string table, string[] schema,  params object[] fields )
        {

            MessageBox.Show("DatabaseManager::Toevoegen() Er valt wat te testen", "DatabaseManager");
            MessageBox.Show("DatabaseManager::Toevoegen() ja, dat is goed", "DatabaseManager");
            //m_cnADONewConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\meetSysteem.mdb";
            OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(dataAdapter);
            Gebruiker nieuweGebruiker = new Gebruiker();

           DataTable m_dtgebruiker = new DataTable();

            GebruikerView nieuweGebruikerView = new GebruikerView();
            //Begin opslaan
            DataRow drNewRow = m_dtgebruiker.NewRow();

            DataTable dtgebruiker = new DataTable();
            DataTable dtDataTable; //new DataTable();
            //dtDataTable = dsDataSet.Tables[0];
            
            //table.Contains("gebruiker");
            //fields.SetValue(1, 2, 3);
            try
            {
                
                m_dtgebruiker.Rows.Add(drNewRow);

                //Lucas
                //foreach columnName in anObject.getCOlumnNames() {
                    //drNewRow[columnName] = anObject.getColumnName(geb);
               // }
                drNewRow["gebruikersnaam"] = "Goededag";
                drNewRow["email"] = "hallo";
                drNewRow["wachtwoord"] = "mooi";
                drNewRow["wachtwoord"] = "mooi";

                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = m_dtgebruiker.Rows.Count - 1;
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                MessageBox.Show("DatabaseManager::Toevoegen() oeps", "DatabaseManager");
            }



            for (int i = 1; i < fields.Length; i++)
            {
                Console.Write(fields[i] + "");
            }
            Console.WriteLine();

          
            //Einde opslaan

            if (schema.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the size of the schema.");

            string query = "INSERT INTO " + table + " (";
            for (int i = 0; i < schema.Length; i++)
            {
                query += schema[i];
                if (i != schema.Length - 1)
                    query += ",";
            }
            query += ") VALUES (";
            for (int i = 0; i < fields.Length; i++)
            {
                query += Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += ",";
            }
            query += ")";

              return this.ExplicitNonQuery(query);

           
          

        }



        

       //Methode verwijderen
        public bool Verwijderen(string table, string[] keys, params object[] fields)
        {

            
            if (!(m_dtgebruiker.Rows.Count == 0))
            {
                m_dtgebruiker.Rows[m_rowPosition].Delete();
                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = 0;
                //this.ShowCurrentRecord();
            }
              


            if (keys.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the number of keys.");
            string query = "DELETE FROM " + table + " WHERE ";
            for (int i = 0; i < fields.Length; i++)
            {
                query += keys[i] + " = " + Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += " AND ";
            }
            return this.ExplicitNonQuery(query);
        }

       //Methode data updaten
        public bool Update(string table, string[] schema, int[] keys, params object[] fields)
        {
            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);
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns></returns>
        
        
        public bool ExplicitNonQuery(string query)
        {

           
               
            try
            {
                this.command.CommandText = query;
                return this.command.ExecuteNonQuery() > 0;
              

                
            }
            catch (SqlException ex)
            {
                return false;
            }
        }

        /// &ltsummary>
        /// Executes a specific query or stored procedure to obtain row data.
        /// </summary>
        /// &ltparam name="query">The name of a stored procedure or a query written in SQL.</param>
        /// &ltreturns>An ArrayList corresponding to the selected rows of the query or stored procedure.</returns>
        
        public ArrayList ExplicitQuery(string query)
        {
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }
        }
         

        public void schrijfNaarDBNieuweGebruiker(String gebruikersnaam , String wachtwoord, String email)
        {
            /*
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (SqlException ex)
            {
                return new ArrayList();
            }*/




        }



        /// &ltsummary>
        /// A method for turning an object into a string, based on its type.
        /// </summary>
        /// &ltparam name="o">The object to be formatted</param>
        /// &ltreturns>A string corresponding to an SQL interpretation of the object.</returns>
        protected abstract string Formatted(object o);
        object o = new object();

    
    
    
        //protected string Formatted(object o)
        //{
            //return null;
        //}


    }
}

Maar dan zegt ie bij dit stukje:

Code:
  return this.command.ExecuteNonQuery() > 0;

ExecuteNonQuery: Connection property has not been initialized.

En ik heb bij OleDbDataAdapter , dit neergezet:

Code:
 OleDbDataAdapter dataAdapter = new OleDbDataAdapter();

Heb jij nog suggesties?

Alvast bedankt


jij probeert het volgende te doen
command.ExecuteNonQuery()
Dat kan maar dan.. moet de OleDbCommand 2 dingen weten: Wat? & waar?

Dus Wat moet hij uitvoeren... Dat heb jij..
Code:
 this.command.CommandText = query;
maar je hebt nergens staan Waar hij dat moet doen(connection)
dus dat wordt zoiets als dit voorbeeld

Code:
 string connString = @" Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";

                OleDbConnection conn = new OleDbConnection(connString);

                this.command.CommandText = query;
                command.Connection = conn;

Als je OleDbComman die ExecuteNonQuery() wilt laten uitvoeren dan moet hij wel eerste verbinding maken , vervolgens de ExecuteNonQuery() en dan de
verbinding weer verbreken
zoals als dit:

Code:
                 command.Connection.Open();
                 return this.command.ExecuteNonQuery() > 0;
                 command.Connection.Close();

Bij command.ExecuteNonQuery() heb je een return staan dus dat betekent dat alle code die daar onderstaat unreachable is en dus wordt connnection close niet uitgevoerd
dus dan kun je beter zoiets doen

Code:
bool vergelijk = false;
                command.Connection.Open();
                if (this.command.ExecuteNonQuery() > 0)
                {
                    vergelijk = true;
                }
                command.Connection.Close();
                return vergelijk;
 
Laatst bewerkt:
ohja het toevoegen van commandtext en connection kun je eventueel ook direct bij het aanmakken van het objectdoen
dus ipv
OleDbCommand command = new OleDbCommand();
zou dan
OleDbCommand command = new OleDbCommand(query,conn);
worden
 
Dag Don,

Ik heb het nu zo:

Code:
//using System. Language="C#" Debug="true"; 

using System;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DatabaseApplication;
using System.Collections.Generic;
using System.Data.Sql;

namespace DatabaseApplication
{
   
    /// De klasse is abstract, gezien de methoden: Toevoegen, update en verwijderen voor algemeen gebruik zijn, dit
    /// wil zeggen dat meerdere klassen van deze methoden gebruik maken. 
    public abstract  class DatabaseManager:System.Object  //{ public DatabaseManager(string foo)  
       
    {
        

        //DataRow drNewRow = dtDataTable.NewRow();
        //Gebruiker gebruiker = new Gebruiker();
        //public DataTable m_dtkastCollectie = new DataTable();
        //public DataTable m_dtkast = new DataTable();
        public DataTable m_dtgebruiker = new DataTable();
        //public DataTable m_dtkastSoort = new DataTable();
        //public DataTable m_dtboek = new DataTable();
        OleDbConnection conn = new OleDbConnection();// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
        OleDbDataReader reader; //
        OleDbCommand command = new OleDbCommand();  //Zorgt ervoor dat Queries kunnen worden uitgevoerd.
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
        //private SqlDataReader reader;
        //private SqlCommand command;
        //private SqlConnection connection;
        private string connectionString;
        int m_rowPosition = 0;

              
        //ConnectieString
        public string GetConnectionString()
        {
                 string  connString =  @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";

                OleDbConnection conn = new OleDbConnection(connString);

                conn.Open(); 

         
            
             
            return connString;  
       

            //create the database connection

            //OleDbConnection conn = new OleDbConnection(GetConnectionString());
            OleDbCommand aCommand;
            OleDbDataReader aReader;


            
            try
            {
              
                conn = new OleDbConnection();
                conn.Open(); 
               
                //OleDbCommand cmd = new OleDbCommand(conn); 
            }

            
            catch (Exception e)
            {
                        Console.WriteLine("Error:" + e); 
                        //System.Windows.Forms.MessageBox.Show(e.Message, "Database access error");
            }

        
            finally
            {
                conn.Close();
                reader.Close();
                
            }

           
    
        

        
        

}
        //Einde verbinding met database

        public ArrayList Select(string table, string ordering)
        {
            return this.ExplicitQuery("SELECT * FROM " + table + " ORDER BY " + ordering);
        }

        

      //Methode Toevoegen
       public  bool Toevoegen(string table, string[] schema,  params object[] fields )
        {

          
            OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(dataAdapter);
            Gebruiker nieuweGebruiker = new Gebruiker();

           DataTable m_dtgebruiker = new DataTable();

            GebruikerView nieuweGebruikerView = new GebruikerView();
            //Begin opslaan
            DataRow drNewRow = m_dtgebruiker.NewRow();

            DataTable dtgebruiker = new DataTable();
            DataTable dtDataTable; //new DataTable();
            //dtDataTable = dsDataSet.Tables[0];
            
          
            try
            {
                
                m_dtgebruiker.Rows.Add(drNewRow);

               
                drNewRow["gebruikersnaam"] = "Goededag";
                drNewRow["email"] = "hallo";
                drNewRow["wachtwoord"] = "mooi";
                drNewRow["wachtwoord"] = "mooi";

                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = m_dtgebruiker.Rows.Count - 1;
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
               
            }



            for (int i = 1; i < fields.Length; i++)
            {
                Console.Write(fields[i] + "");
            }
            Console.WriteLine();

          
            //Einde opslaan

            if (schema.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the size of the schema.");

            string query = "INSERT INTO " + table + " (";
            for (int i = 0; i < schema.Length; i++)
            {
                query += schema[i];
                if (i != schema.Length - 1)
                    query += ",";
            }
            query += ") VALUES (";
            for (int i = 0; i < fields.Length; i++)
            {
                query += Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += ",";
            }
            query += ")";

              return this.ExplicitNonQuery(query);           
          

        }



        

       //Methode verwijderen
        public bool Verwijderen(string table, string[] keys, params object[] fields)
        {

            
            if (!(m_dtgebruiker.Rows.Count == 0))
            {
                m_dtgebruiker.Rows[m_rowPosition].Delete();
                dataAdapter.Update(m_dtgebruiker);
                m_rowPosition = 0;
                //this.ShowCurrentRecord();
            }
              


            if (keys.Length != fields.Length)
                throw new ArgumentException("The number of fields does not match the number of keys.");
            string query = "DELETE FROM " + table + " WHERE ";
            for (int i = 0; i < fields.Length; i++)
            {
                query += keys[i] + " = " + Formatted(fields[i]);
                if (i != fields.Length - 1)
                    query += " AND ";
            }
            return this.ExplicitNonQuery(query);
        }

       //Methode data updaten
        public bool Update(string table, string[] schema, int[] keys, params object[] fields)
        {
            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);
        }

       

        //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(string query)
        {
            

            this.command.CommandText = query;
            command.Connection = conn;

           
               
            try
            {
                //OleDbConnection conn = this.GetDatabaseConnection();
                //
               // OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\meetSysteem.mdb";
                //conn.Open();
                //
                conn.Open();//Zorgt voor de connectieString. Deze is gekoppeld aan: command.Connection.Open()
                this.command.CommandText = query;
                conn.Close();


                bool vergelijk = false;
                command.Connection.Open();
                if (this.command.ExecuteNonQuery() > 0)
                {
                    vergelijk = true;
                }
                command.Connection.Close();
                
                return vergelijk;

              
               
              

                
            }
            catch (OleDbException ex)
            {
                return false;
            }
        }

       
        
        public ArrayList ExplicitQuery(string query)
        {
            try
            {
                ArrayList gebruikersnaam = new ArrayList();
                this.command.CommandText = query;
                this.reader = this.command.ExecuteReader();
                while (this.reader.Read())
                {
                    ArrayList a = new ArrayList();
                    for (int i = 0; i < this.reader.FieldCount; i++)
                        a.Add(this.reader[i]);
                    gebruikersnaam.Add(a);
                }
                this.reader.Close();
                return gebruikersnaam;
            }
            catch (OleDbException ex)
            {
                
                return new ArrayList();
            }
        }
         

        



        //Om een object naar een string te converteren
        protected abstract string Formatted(object o);
        object o = new object();

       }
}

Maar dit is natuurlijk niet goed, gezien, nu 2x de connectiestring staat vermeld:

Code:
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\meetSysteem.mdb";

Maar als ik de connectiestring hier niet plaats. Dan geeft ie elke x de error:

Code:
The ConnectionString property has not been initialized.

Het gaat dan weer om dit stukje:
Code:
 public bool ExplicitNonQuery(string query)
        {
            

            this.command.CommandText = query;
            command.Connection = conn;

           
               
            try
            {
                //OleDbConnection conn = this.GetDatabaseConnection();
                //
               // OleDbConnection conn = new OleDbConnection();
               // conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\meetSysteem.mdb";
                //conn.Open();
                //
                conn.Open();//Zorgt voor de connectieString. Deze is gekoppeld aan: command.Connection.Open()
                this.command.CommandText = query;
                conn.Close();


                bool vergelijk = false;
                command.Connection.Open();
                if (this.command.ExecuteNonQuery() > 0)
                {
                    vergelijk = true;
                }
                command.Connection.Close();
                
                return vergelijk;

              
               
              

                
            }
            catch (OleDbException ex)
            {
                return false;
            }
        }


De acces database slaat ook niks op. Als ik op de button: ‘Toevoegen’durk. Heb jij nog enkele tips?

Alvast bedankt.
 
Laatst bewerkt:
Maar dit is natuurlijk niet goed, gezien, nu 2x de connectiestring staat vermeld:

Code:
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\meetSysteem.mdb";

Maar als ik de connectiestring hier niet plaats. Dan geeft ie elke x de error:

Ik begrijp niet goed wat je hiermee bedoelt dat hij 2x vermeld staat. De enige andere plek waar het staat is in de methode GetConnectionString() maar deze methode roep je nergens aan dus wordt die niet uitgevoerd.
Volgens mij kun je het beste het volgende doen:
Vervang
Code:
   OleDbConnection conn = new OleDbConnection();// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.
voor:
Code:
  string  connString =  @"
                Provider = Microsoft.Jet.OLEDB.4.0;
                Data Source = C:\meetSysteem.mdb";
public OleDbConnection conn = new OleDbConnection(connString);// Zorgt ervoor dat er een connectie tot stand kan worden gebracht.

en de methode ExplicitNonQuery(string query) wordt dan
Code:
public bool ExplicitNonQuery(string query)
        {
            

            command.CommandText = query;
            command.Connection = conn;
           bool vergelijk = false;           
            try
            {
 
                command.Connection.Open();
                if (command.ExecuteNonQuery() > 0)
                {
                    vergelijk = true;
                }
                command.Connection.Close();   
                return vergelijk;
     
            }
            catch (OleDbException ex)
            {
                return false;
            }
        }

Dit zou een verdindingen met de database moeten maken en de meegeven query uitvoeren.
Als de database niks opslaat dan ligt het waarschijnlijk aan de query die je meegeeft (methode toevoegen)

Ik heb verder nog niet gekeken naar de methode toevoegen() (tenminste ik neem aan dat je die aan roept als je op de knop klikt?)
Als he tnog niet werkt dan moet je anders maar even je hele code en een voorbeeld MDb sturen dan is het wat makkelijker om te kijken wat er niet goed gaat
 
Hoi Don,

Jij helpt me echt enorm.

Maar is het wellicht handiger om te mailen. Of heb jij wellicht msn?

Kan je op dit forum ook prive berichten plaatsen?

Niels.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan