Avatar billede juks Novice
25. januar 2008 - 09:18 Der er 21 kommentarer og
1 løsning

public klasser der gemmer til Access

Hej ,
Kan man ikke lave en funktion , så man lave update funktion osv. til hele sin database , så man ikke skal skrive det på hver form
Avatar billede juks Novice
25. januar 2008 - 09:21 #1
Det jeg mener er hvis man har en MDB med 5 tabller så skal kunne kalde en funktion
update("tabelnavn","felter","values")
insert("tabeln.....
osv.
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 09:52 #2
Jo du kan jo en klasse med alle de database funktioner som du ønsker(insert, update, select osv.) og så kalde de enkelte funktioner med parametrene tabel koloner og værdier. I de enkelte funktioner bygger du så en sql kommando op udfra de modtagne parametre.
Avatar billede juks Novice
25. januar 2008 - 10:32 #3
har du et eksembel ... er lidt noob.
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 10:37 #4
noget ala:

public static DataSet select(string table, string condition)
{
    string sql = "SELECT * FROM " + table + " WHERE " + condition;
    //Fyr sql'en af som du plejer og returner datasetet
}
Avatar billede juks Novice
25. januar 2008 - 10:50 #5
problemet er jeg plejer ikke at fyre noget :-(


Kan godt være det er mig der er tosset.

men jeg har lavet en funktion med Datagrid etx.
når jeg skriver dette
         
            this.klasser_tblTableAdapter1.InsertQuery(this.klassetekst.Text);
            this.klasser_tblTableAdapter1.Update(skytteMDB.klasser_tbl); 
                this.skytteMDB.AcceptChanges();

opdatere den fint , og jeg kan bruge de data. men når jeg lukker så gemmmer den intet
burde man ikke bare kunne lave en funktion der søger for at gemme det hele ..
Avatar billede juks Novice
25. januar 2008 - 11:04 #6
har prøvet

  private void button2_Click(object sender, EventArgs e)
        {

            try
            {
              // this.Validate();
                this.klassertblBindingSource.EndEdit();
                this.klasser_tblTableAdapter1.Update(this.skytteMDB.klasser_tbl );
                MessageBox.Show("Update successful");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Update failed" + ex );
            }

men får en fejl om at update kræver en gyldig række updatecommand

        }
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 11:10 #7
prøv noget i stil med:

OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\db1.mdb");
            conn.Open();
            try
            {
                OleDbCommand command = conn.CreateCommand();

                try
                {
                    command = new OleDbCommand();
                    command.CommandText = "SELECT * FROM " + table + " WHERE " + condition;
                    command.Connection = conn;

                    OleDbDataReader reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        string col0 = reader.GetString(0);
                        string col1 = reader.GetString(1);
                        string col2 = reader.GetString(2);
                        //OSV
                    }
                }
                catch(Exception ex)
                {
                   
                }
            }
            catch(OleDbException ex)
            {
               
            }
            finally
            {
                conn.Close();
            }

Skal selvfølgelig rettes til mht. dine koloner.
Avatar billede juks Novice
25. januar 2008 - 11:19 #8
keg er slet ikke med ..
Avatar billede juks Novice
25. januar 2008 - 11:22 #9
jeg troede at når jeg definerede/indsatte en MDB i Visual studio , så kom de funtkioner med , så man ikke skal "hardcode" det hele .?
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 11:22 #10
okay ... har du en funktion som virker som du bare ikke gider skrive i hver form, er det det?
Avatar billede juks Novice
25. januar 2008 - 11:28 #11
nej problemet er jeg troede ....
når jeg nu har et datasat , som jeg har sat op via guides i VS2005 så kunne man gemme de data man ændre.

de "gemmes" jo så længe applikation køre men den får ikke skrevet dem til DBén
giver det menning eller
Avatar billede juks Novice
25. januar 2008 - 11:30 #12
jeg kan jo se data i mit datagrid . men ved ikke hvordan jeg får det skrevet til databasen
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 11:48 #13
Jeg vil ikke afvise at det kan lade sig gøre men jeg har aldrig arbejdet på den måde, sorry.
Avatar billede juks Novice
25. januar 2008 - 11:49 #14
ok hvordna vil du så forslå jeg gør?
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 12:17 #15
som beskrevet ovenfor ;-)

lave en metode til hver type query som tager de nødvendige parametre og så opbygger en SQL statement dynamisk som fyres af mod databasen.
Avatar billede juks Novice
25. januar 2008 - 12:31 #16
using System;
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace eksamen
{
    public class DataAccessWrite
    {

        //private static string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\Jfk\MK\GEORAP\georap.mdb";


        public static void expTEst(string tabel , string felter, string values)
        {
            string  sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\skytte\skytte.mdb";
            OleDbConnection dbConn;
            dbConn = new OleDbConnection(sConnection);

            try
            {

                dbConn.Open();
                string sql;

                sql = "INSERT INTO " + tabel+" ("+felter +") VALUES ('"+  values +"')";
                IDbCommand dbCmd;
            //  sql= "INSERT INTO klasser_tbl (klasse_tekst)VALUES        ('test')
                dbCmd = new OleDbCommand();
                Console.WriteLine(sql);
                dbCmd.CommandText = sql;
                dbCmd.Connection = dbConn;

                dbCmd.ExecuteNonQuery();
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if ((dbConn != null) && (dbConn.State != ConnectionState.Closed))
                    dbConn.Close();
            }
        }

    }
}
Avatar billede juks Novice
25. januar 2008 - 12:32 #17
osv .. ikke ?

havde bare håbet der var en nemmere løsning.
Avatar billede mikkel_sommer Nybegynder
25. januar 2008 - 14:38 #18
Lige præcis, det er så indsæt, dernæst kommer de andre (update, select osv.)
Avatar billede arne_v Ekspert
26. januar 2008 - 04:39 #19
Kast eventuelt et blik på MS DAAB !
Avatar billede juks Novice
10. juni 2008 - 14:43 #20
smid et svar tak
Avatar billede mikkel_sommer Nybegynder
11. juni 2008 - 08:34 #21
Svar :)
Avatar billede mikkel_sommer Nybegynder
11. juni 2008 - 08:34 #22
Og så lige et rigtigt svar ;-)
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