Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

C Sharp Datenbanksuch und Updatefrage

Frage Entwicklung C und C++

Mitglied: iceget

iceget (Level 2) - Jetzt verbinden

09.10.2010, aktualisiert 11.10.2010, 2992 Aufrufe, 5 Kommentare

Hallo liebe Community,

und zwar habe ich folgende Frage:

ich bin beginner in C#.

Ich habe eine Konsolenanwendung erstellt, mit der ich eine AccessDatenbank mittels ODBC auslese,
und dann direkt in eine MySQL Datenbank schreibe.

Das funktioniert alles prima, nur würde ich gerne folgendes erreichen:

Wie kann ich das bewerkstelligen das er zuerst (bevor er in die MySQL Datenbank einen Eintrag macht) in der MySQL Datenbank nachschaut ob es diesen Eintrag schon gibt (anhand der einmaligen NR),
und erst dann die Daten von der Access Datenbank reinspielt?

So wie jetzt, befüllt er mir die Datenbank nach jeder Ausführung, ...


Könnt ihr mir helfen?

Eigentlich möchte ich die Access Datenbank mit der MySQL Datenbank syncen,
und anschließend immer nur über das Datum zurückverfolgen was geändert wurde,
das ich nicht immer alles syncen muss. Wenn was geändert wird, wird das Feld Datum auf das aktuelle Änderungsdatum geändert!

Vielen Dank!

glg Markus

Hier der Code:
01.
using System; 
02.
using System.Collections.Generic; 
03.
using System.Linq; 
04.
using System.Text; 
05.
using System.Threading; 
06.
using System.Data.Odbc; 
07.
// benötigt für die MySql Datenbankanbindung 
08.
using MySql.Data.MySqlClient; 
09.
 
10.
namespace SyncService 
11.
12.
    class Program 
13.
14.
        static void Main(string[] args) 
15.
16.
 
17.
 
18.
            // MySQL Zugangsdaten 
19.
            string mysql_host = "xxx"; 
20.
            string mysql_datenbank = "xxx"; 
21.
            string mysql_benutzername = "xxx"; 
22.
            string mysql_passwort = "xxx"; 
23.
 
24.
            // MySQL Datenbank Verbindungsstring 
25.
            string mysql_connect = "server=" + mysql_host + ";database=" + mysql_datenbank + ";uid=" + mysql_benutzername + ";password=" + mysql_passwort + ";"; 
26.
 
27.
            // Definieren einer neuen MySQL-Verbindung 
28.
            MySqlConnection MySQLDbConnection = new MySqlConnection(mysql_connect); 
29.
 
30.
            // MySQL Datenbankverbindungstest. Falls dieser fehlschlägt, wird das Programm beendet 
31.
            try 
32.
33.
                MySQLDbConnection.Open(); 
34.
35.
            catch (MySqlException ex) 
36.
37.
                Console.WriteLine("connection to the MySQL Database '" + mysql_datenbank + "' failed."); 
38.
                Console.WriteLine("The MySQL Database returned the following message"); 
39.
                Console.WriteLine(ex.Message); 
40.
                Thread.Sleep(5000); 
41.
                return; 
42.
43.
 
44.
            // ODBC DSN Name (muss zuerst in Windows per System DSN hinzugefügt werden (Access Datenbank auswählen, System DSN Name zuweisen, fertig)) 
45.
            string DSN = "xxx"; 
46.
 
47.
            // Definieren einer neuen Access ODBC-Verbindung 
48.
            OdbcConnection AccessDbConnection = new OdbcConnection("DSN=" + DSN); 
49.
 
50.
            // Access Datenbankverbindungstest. Falls dieser fehlschlägt, wird das Programm beendet 
51.
            try 
52.
53.
                AccessDbConnection.Open(); 
54.
55.
            catch (OdbcException ex) 
56.
57.
                Console.WriteLine("connection to the DSN '" + DSN + "' failed."); 
58.
                Console.WriteLine("The OdbcConnection returned the following message"); 
59.
                Console.WriteLine(ex.Message); 
60.
                Thread.Sleep(5000); 
61.
                return; 
62.
63.
 
64.
            OdbcCommand AccessDbCommand = AccessDbConnection.CreateCommand(); 
65.
            AccessDbCommand.CommandText = "SELECT * FROM CLI ORDER BY NOME ASC"; 
66.
            OdbcDataReader AccessDbReader = AccessDbCommand.ExecuteReader(); 
67.
 
68.
 
69.
            int id = 0; 
70.
            string ida = ""; 
71.
            // Ausgeben der Einträge der Tabelle CLI 
72.
            while (AccessDbReader.Read()) 
73.
74.
 
75.
                id++; 
76.
 
77.
                // führende 0en 
78.
                if (id <= 10) 
79.
80.
                    ida = "0000"; 
81.
82.
                if (id >= 10) 
83.
84.
                    ida = "000"; 
85.
86.
                if (id >= 100) 
87.
88.
                    ida = "00"; 
89.
90.
                if (id >= 1000) 
91.
92.
                    ida = "0"; 
93.
94.
 
95.
                // GetString(0) = Vertragsnummer 
96.
                String CODICE = AccessDbReader.GetString(0); 
97.
                 
98.
                // GetString(1) = Name 
99.
                String NOME = AccessDbReader.GetString(1); 
100.
 
101.
                Console.WriteLine(ida + id + " | "); 
102.
 
103.
 
104.
                MySqlCommand mysql_command_update = new MySqlCommand("INSERT INTO `" + mysql_datenbank + "`.`CLI` (`CODICE`,`NOME`) VALUES ('" + CODICE + "','" + NOME + "');", MySQLDbConnection); 
105.
                mysql_command_update.ExecuteNonQuery(); 
106.
 
107.
108.
            Thread.Sleep(99999); 
109.
 
110.
            AccessDbReader.Close(); 
111.
            AccessDbCommand.Dispose(); 
112.
            AccessDbConnection.Close(); 
113.
 
114.
 
115.
116.
117.
}
[Edit] Latent vorhandenen Code durch so genannte "Code-Formatierung" sichtbar gemacht. Weil ich geduldig bin.... [/Edit]
Mitglied: AhraLordNikon
09.10.2010 um 12:40 Uhr
Mal etwas plump ;) mach doch einfach erst eine select und schau ob du was zurückbekommst. Falls er nichts findet dann machst du den Insert oder hab ich dich falsch verstanden.
Bitte warten ..
Mitglied: Edi.Pfisterer
09.10.2010 um 19:34 Uhr
Hallo!
gebe AhraLordNikon recht, erst
01.
' Pseudocode: 
02.
select * from tbl_xy where id = x und  
03.
if rs.eof then 
04.
    insert into ... 
05.
end if
Dein Code ist allerdings mangels Formatierung ziemlich schwer lesbar (ich will mich da gar nicht bemühen)...

mein Tipp:
eine entsprechende Formatierung mittels CODE (ich emfpehle die Formatierungshilfe) wird sicherlich mehr Kollegen für dieses Thema begeistern können

gutes gelingen
lg
Bitte warten ..
Mitglied: 76109
10.10.2010 um 20:00 Uhr
Hallo

Noch als kleine Anmerkung zu den führenden Nullen. Das geht auch einfacher:
Right("0000" + id, 5)

Gruß Dieter
Bitte warten ..
Mitglied: iceget
13.10.2010 um 01:10 Uhr
DANKE!

ich habe dies nun so durchgeführt, so funktioniert es perfekt!

Vielen Dank!

glg Markus
Bitte warten ..
Mitglied: iceget
13.10.2010 um 01:11 Uhr
Vielen Dank für diesen wirklich sehr hilfreichen Tipp (bin leider noch in der Anfangsphase von C#).

lg Markus
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Visual Studio
C-Sharp WPF Binding TextBox.Text und Property MVVM (die 2.) (4)

Frage von mayho33 zum Thema Visual Studio ...

Windows Server
C sharp oder Powershell oder VB? (3)

Frage von 1410640014 zum Thema Windows Server ...

Visual Studio
Interner Shop mit Microsoft Forms Anwendung C-Sharp (2)

Frage von talaihan zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...