C Sharp Datenbanksuch und Updatefrage
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:
[Edit] Latent vorhandenen Code durch so genannte "Code-Formatierung" sichtbar gemacht. Weil ich geduldig bin.... [/Edit]
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:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Data.Odbc;
// benötigt für die MySql Datenbankanbindung
using MySql.Data.MySqlClient;
namespace SyncService
{
class Program
{
static void Main(string args)
{
// MySQL Zugangsdaten
string mysql_host = "xxx";
string mysql_datenbank = "xxx";
string mysql_benutzername = "xxx";
string mysql_passwort = "xxx";
// MySQL Datenbank Verbindungsstring
string mysql_connect = "server=" + mysql_host + ";database=" + mysql_datenbank + ";uid=" + mysql_benutzername + ";password=" + mysql_passwort + ";";
// Definieren einer neuen MySQL-Verbindung
MySqlConnection MySQLDbConnection = new MySqlConnection(mysql_connect);
// MySQL Datenbankverbindungstest. Falls dieser fehlschlägt, wird das Programm beendet
try
{
MySQLDbConnection.Open();
}
catch (MySqlException ex)
{
Console.WriteLine("connection to the MySQL Database '" + mysql_datenbank + "' failed.");
Console.WriteLine("The MySQL Database returned the following message");
Console.WriteLine(ex.Message);
Thread.Sleep(5000);
return;
}
// ODBC DSN Name (muss zuerst in Windows per System DSN hinzugefügt werden (Access Datenbank auswählen, System DSN Name zuweisen, fertig))
string DSN = "xxx";
// Definieren einer neuen Access ODBC-Verbindung
OdbcConnection AccessDbConnection = new OdbcConnection("DSN=" + DSN);
// Access Datenbankverbindungstest. Falls dieser fehlschlägt, wird das Programm beendet
try
{
AccessDbConnection.Open();
}
catch (OdbcException ex)
{
Console.WriteLine("connection to the DSN '" + DSN + "' failed.");
Console.WriteLine("The OdbcConnection returned the following message");
Console.WriteLine(ex.Message);
Thread.Sleep(5000);
return;
}
OdbcCommand AccessDbCommand = AccessDbConnection.CreateCommand();
AccessDbCommand.CommandText = "SELECT * FROM CLI ORDER BY NOME ASC";
OdbcDataReader AccessDbReader = AccessDbCommand.ExecuteReader();
int id = 0;
string ida = "";
// Ausgeben der Einträge der Tabelle CLI
while (AccessDbReader.Read())
{
id++;
// führende 0en
if (id <= 10)
{
ida = "0000";
}
if (id >= 10)
{
ida = "000";
}
if (id >= 100)
{
ida = "00";
}
if (id >= 1000)
{
ida = "0";
}
// GetString(0) = Vertragsnummer
String CODICE = AccessDbReader.GetString(0);
// GetString(1) = Name
String NOME = AccessDbReader.GetString(1);
Console.WriteLine(ida + id + " | ");
MySqlCommand mysql_command_update = new MySqlCommand("INSERT INTO `" + mysql_datenbank + "`.`CLI` (`CODICE`,`NOME`) VALUES ('" + CODICE + "','" + NOME + "');", MySQLDbConnection);
mysql_command_update.ExecuteNonQuery();
}
Thread.Sleep(99999);
AccessDbReader.Close();
AccessDbCommand.Dispose();
AccessDbConnection.Close();
}
}
}
[Edit] Latent vorhandenen Code durch so genannte "Code-Formatierung" sichtbar gemacht. Weil ich geduldig bin.... [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152669
Url: https://administrator.de/contentid/152669
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo!
gebe AhraLordNikon recht, erst
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
gebe AhraLordNikon recht, erst
' Pseudocode:
select * from tbl_xy where id = x und
if rs.eof then
insert into ...
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
Hallo
Noch als kleine Anmerkung zu den führenden Nullen. Das geht auch einfacher:
Gruß Dieter
Noch als kleine Anmerkung zu den führenden Nullen. Das geht auch einfacher:
Right("0000" + id, 5) |
Gruß Dieter