.NET BLog
Ab sofort habe ich einen technischen BLog, welcher sich Schwerpunktmäßig mit .NET und Compact Framework befasst . Zu finden unter:
Ab sofort habe ich einen technischen BLog, welcher sich Schwerpunktmäßig mit .NET und Compact Framework befasst . Zu finden unter:

So mein letztes BLog posting ist schon eine ganze Weile her, da überall viel zu erledigen war. Nun habe ich aber einen kleinen Augenblick gefunden um die CompactFramework (.NET Framework für PDA) Section etwas füllen z
Meine Heimatsprache liegt ja eigentlich in VFP insofern bin ich es gewohnt viele schnelle Datenbankoperationen direkt in meiner Entwicklungsumgebung zu haben. Wie Z.bsp. ein LookUp() oder der Seek()
In .NET speziell im Compact Framework gibt es auch eine ganze Reihe von Möglichkeiten, welche aber nicht so einfach zur Verfügung stehen.
Im Rahmen eines Imports benötigte ich jedoch eine Methode, welche es ermöglicht so schnell wie möglich feststellen zu können ob ein Datensatz bereits existiert, diese wird auch Mehrfach hinterinander aufgerufen.
Deswegen habe ich versucht 2 Methoden zu implementeieren welche den VFP SEEK() und LOOKUP sehr nahe kommen. Hierzu habe insbesodnere in den Newsgroups anleitung gefunden.
Diese Methode läuft sowohl mit SQLCe also auch dem SQL Mobile 3.0
///
/// SqlCeCommand Objekt für die Seek und lookup methode
///
SqlCeCommand Seekcmd;
///
/// SQlCEDataReader für Lookup() und Seek
///
SqlCeDataReader rdr;
///
/// Prüft auf einem Indes ob die angebene ID in dem Index Felder der angegebenen Tabelle existiert
///
///
Tabelle in der gesucht wird
///
ID nach der gesucht wird
///
Indiziertes Feld in dem gesucht wird, ohne Index -> Exception
/// bool ob gefunden
public bool Seek(string tcTable, string tcID, string tcIndexField)
{
// BaseTable Search = VFP indexbased Seek() Like Suche
bool llFound = false;
// Wir suchen auf der angebenen Tabelle
Seekcmd.CommandText = tcTable;
// und dem angebenen Index
Seekcmd.IndexName = tcIndexField;
// Die Range gibt an für welchen Bereich espäter ein Reader erzeugt werden soll.
// In unserem Fall eben genau dieser eine Wert. Ein Reader hat den Vortiel dass wir nicht erst selektieren
// müssen sondern uns einfach direkt auf den Zielsatz setzen werden.
Seekcmd.SetRange(DbRangeOptions.Match , new object[] { tcID }, null);
// wir erzeugen uns aus TableName,Index und Range einen Reader
using (this.rdr = Seekcmd.ExecuteReader())
{
//// Prüfen ob wir einen Reader erzeugen konnten.
if (this.rdr != null && !this.rdr.IsClosed && this.rdr.HasRows)
{
//Wenn nun das erste lesen klappt haben wir einen satz gefunden!
if (rdr.Read())
{
llFound = true;
}
}
// Reader schliesen
this.rdr.Close();
}
return llFound;
}