Avatar billede koppelgaard Praktikant
30. maj 2007 - 13:12 Der er 9 kommentarer og
1 løsning

Skrive til AccessDatabase

Jeg har følgende stump kode, som kan læse 'time' fra en Accesstabel
Jeg vil gerne have koden modificeret( eller noget helt andet kode),
som kan skrive til samme Accesstabel Lad os antage at der er to kollonner 'time' og 'value'

Michael


using System;
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace ConsoleApplication1
{
    public class DataAccessRead
    {       
       
        private static  string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\Jfk\MK\GEORAP\georap.mdb";

       
        public static void LæsData()
        {

            IDbConnection dbConn = null;
            try
            {
                dbConn = new OleDbConnection(sConnection);
                dbConn.Open();
                string sql;
                sql = "SELECT * FROM A_LEVEL_OUT;";
                IDbCommand dbCmd;
                dbCmd = new OleDbCommand();
                dbCmd.CommandText = sql;
                dbCmd.Connection = dbConn;

                IDataReader dbReader;
                dbReader = dbCmd.ExecuteReader();
                string tmp = "";
                while (dbReader.Read())
                { 
                    tmp = Convert.ToString( dbReader["Time"]);
                    Console.WriteLine(tmp);               

                }
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if ((dbConn != null) && (dbConn.State != ConnectionState.Closed))
                    dbConn.Close();
            }           
        }
    }
}//class
Avatar billede korup Nybegynder
30. maj 2007 - 13:28 #1
Skulle mene at denne kan gøre det :)

///------------------- START
      public void expTEst()
        {
            string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\Jfk\MK\GEORAP\georap.mdb";
            OleDbConnection dbConn;
            dbConn = new OleDbConnection(sConnection);         

            try
            {

                dbConn.Open();
                string sql;
                sql = "INSERT INTO A_LEVEL_OUT (time, value) VALUES ("+DateTime.Now+",'værdien');";
                IDbCommand dbCmd;
                dbCmd = new OleDbCommand();
                dbCmd.CommandText = sql;
                dbCmd.Connection = dbConn;

                int dbReader;
                dbReader = dbCmd.ExecuteNonQuery();
                string tmp = "";
                if (dbReader != 0)
                { 
                    tmp = Convert.ToString( dbReader);
                    Console.WriteLine(tmp);               

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

///------------------- SLUT
Avatar billede neoman Novice
30. maj 2007 - 13:35 #2
korup har et fint forslag men:
 
              int dbReader;
                dbReader = dbCmd.ExecuteNonQuery();
                string tmp = "";
                if (dbReader != 0)
                {
                    tmp = Convert.ToString( dbReader);
                    Console.WriteLine(tmp);             

                }

skal erstattes med

dbCmd.ExecuteNonQuery();

alt det andet skal væk. En reader LÆSER data (som navnet jo antyder) :)
Avatar billede koppelgaard Praktikant
30. maj 2007 - 13:49 #3
Fedt jeg prøver !!
Avatar billede korup Nybegynder
30. maj 2007 - 13:54 #4
Hvad jeg lige ved så returnere dbCmd.ExecuteNonQuery(), antallet af rækker der er blevet ændret/indsat i DB som int.

Synes bare det er en go måde at kontroller om den er kommet ind i DB.

/korup
Avatar billede neoman Novice
30. maj 2007 - 14:09 #5
Du har 100 % ret - jeg blev bare lidt paf over at se "reader" indblandet, fordi jeg faktisk har set folk prøve at skrive data til en DB vha af en reader :) Ved nærlæsning af din kodestump, så er den fin nok - synes blot dbReader kunne hedde noget andet, så som rowsAffected :)
Avatar billede koppelgaard Praktikant
30. maj 2007 - 14:10 #6
Har prøvet følgende, men får at vide at der er en fejl i sql-sætningen.
Tabellen hedder "tabel" og har to tekst-felter "time" og "val"

using System;
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace ConsoleApplication1
{
    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 sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\Jfk\MK\GEORAP\georap.mdb";
            OleDbConnection dbConn;
            dbConn = new OleDbConnection(sConnection);         

            try
            {

                dbConn.Open();
                string sql;
                sql = "INSERT INTO tabel (time, val) VALUES (+ 'tid','værdien');";
                IDbCommand dbCmd;
                dbCmd = new OleDbCommand();
                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();
            }   
        }

    }
}
//class
Avatar billede koppelgaard Praktikant
30. maj 2007 - 14:39 #7
Hurra!
Da jeg ændrede navnet på feltet 'time' til 'tid' lykkedes det.
Send svar, hvis I vil have point!
Avatar billede korup Nybegynder
30. maj 2007 - 14:48 #8
svar :)
Avatar billede neoman Novice
30. maj 2007 - 14:52 #9
Jamen det er korup som har lavet hele arbejdet - jeg har bare lavet "noise" så springer over :)
Avatar billede koppelgaard Praktikant
30. maj 2007 - 15:11 #10
Jamen, det siger vi så.
Tak igen, jeg ved ikke, hvad jeg skulle gøre uden eksperten.
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