Get Blogged by JoKi

"The only frontiers are in your mind"
24 | 04 | 2017
Navigation
Syndication
Latest Tweets

Most Read Articles
Article Time Line
About me
Family guy, geek, entrepreneur, software craftsman: Visual FoxPro, C#, SQL Server, MySQL, Linux consultant, conference speaker

Certificates & Awards

Microsoft Certified Professional

Microsoft Specialist - Programming in HTML5 with JavaScript and CSS3 Specialist

Get in touch

Sharing is caring

Recent books


Sponsoring
If you like the information on these pages, your support is highly appreciated.
Thank you very much!
Affiliates

 

Spacer for layout formatting

VFP Datenbank in .NET

User Rating:☆☆☆☆☆ / 0
PoorBest 
Development 05 April 2005 - 
Auf zu neuen Ufern und die ersten Schritte sehen bereits vielversprechend aus. Nachdem ich am letzten Sonntag abends im Hotel zur Entspannung mal ein wenig angefangen habe mit dem Visual Studio 2003 und C# zu experimentieren...
Ja, wollte mal sehen, ob ich es schaffe einen simplen Browse zu erstellen (gekürzte Fassung):

Quellcode:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;

namespace Vfp4Net
{
public class VfpDataAccess : System.Windows.Forms.Form
{
private DataSet ds;

public VfpDataAccess()
{
InitializeComponent();
}

[STAThread]
static void Main()
{
Application.Run(new VfpDataAccess());
}

private void VfpDataAccess_Load(object sender, System.EventArgs e)
{
string ConnectionString = @"Provider=vfpoledb.1;Data Source=C:FoxProVFP9SamplesNorthwind orthwind.dbc";
OleDbConnection Connection = new OleDbConnection(ConnectionString);
Connection.Open();

string SqlQuery = "SELECT TOP 10 LastName, FirstName, Title FROM Employees ORDER BY employeeid";
OleDbCommand Command = new OleDbCommand(SqlQuery, Connection);

OleDbDataAdapter DataAdapter = new OleDbDataAdapter(SqlQuery, Connection);
DataSet ds = new DataSet();
DataAdapter.Fill(ds);
this.ds = ds;

Connection.Close();
}

private void cmdLoad_Click(object sender, System.EventArgs e)
{
this.grdEmployees.DataBindings.Clear();
this.grdEmployees.SetDataBinding(this.ds, "");
}
}
}


Wie man unschwer erkennen kann, war mir ein simples 'Hello World' als Einstieg zu - reden wir nicht drüber. Und das Ganze ohne den Guide To C#...

Ich hoffe, dass es einigermaßen akzeptabler Code ist... Kommentare?

Well, ist ja alles supertoll und auch easy zu verstehen, aber... Und jetzt fängt der Spass doch erst an. Sämtliche Quellen im Internet und in sonstiger Literatur haben leider einen extremen Schönheitsfehler bei der Beschreibung von ADO.NET: Die Datenquelle wird immer(!) - okay, zu 99,9% - als vorhanden vorausgesetzt.

Schon probiert, eine neue Datenbank im SQL Server, Access oder Visual FoxPro per ADO.NET anzulegen? - Vergiss es!

Nunja, es muss ja was geben. Nach einigen Recherchen, ein paar grauen Haaren mehr und Cola Light dann der erste Lichtfunke: ADOX - ActiveX Data Objects Extension
Und hier haben wir auch den Schlüssel zum Erfolg (VFP Code):

Quellcode:

Adox = CreateObject("Adox.Catalog")
oDbc = Adox.Create("Provider=vfpoledb.1;Data Source=C:WUTemp orthwind.dbc")
? oDbc.ConnectionString


Man muss nun dran denken, dass man einen COM Verweis im Projekt hinzufügt:

* Projektmappen-Explorer öffnen / anzeigen
* Rechtsklick auf Verweise
* Verweis hinzufügen...
* Auf den Tab COM wechseln und
* Microsoft ADO Ext. 2.8 for DDL and Security selektieren
* [ Auswählen ]
* [ OK ]

Somit steht euch eine ADOX Proxy-Klasse in eurem Projekt zur Verfügung, welches für die Erstellung und Einstellung der Sicherheitsregeln der Datenbank genutzt werden kann. Derzeit stehen die ADOX Objekte und Methoden nicht als Managed Code Klassen zur Verfügung.
Klar, wieso auch? - Datenbanken wachsen an Bäumen...

Okay, hier noch das Resultat wie man bequem im .NET Framework mittels COM Interop auf die ADOX-Objekte zugreift und eine Visual FoxPro Datenbank erstellt:

Quellcode:

using ADOX;
using System;

string ConnectionString = @"Provider=vfpoledb.1;Data Source=C:FoxProVFP9SamplesNorthwind orthwind.dbc";

CatalogClass adox = new CatalogClass();
object oDbc = adox.Create(ConnectionString);


Echt easy, wenn es weiß, oder?
Nur bin ich mir noch ganz klar, wie ich die Klassendeklaration ADODB.Connection dem erzeugten object oDbc beibringe. Aber das wird auch noch klappen.

Soviel zu meiner ersten Lektion in den Un-Tiefen von C# und dem .NET Framework.


Bis denne, JoKi


blog comments powered by Disqus
 
Spacer for layout formatting