Get Blogged by JoKi

"The only frontiers are in your mind"
06 | 02 | 2012
Navigation
Syndication
Latest Tweets
Most Read Articles
Related Resources
Article Time Line
About me
Microsoft MVP - Visual Developer for Visual FoxPro 2006 & 2007

Microsoft Certified Professional

Get in contact

Sharing is caring

Recent books

  • MCTS 70-536 - .NET Framework 2.0 Application Development Foundation
  • Code-Centric: T-SQL Programming with Stored Procedures and Triggers
  • Microsoft .NET Framework-Programmierung in C#

Community

deutschsprachige FoxPro User Group

Microsoft Community Leader/Insider Program

International .NET Association

O'Reilly Verlag
Sponsoring
If you like the information on these pages, your support is highly appreciated.
Thank you very much!
Validation

Valid XHTML 1.0 Transitional
Valid CSS!
Valid RSS
Valid Atom 1.0

Spacer for layout formatting
VFP Datenbank in .NET PDF Version
User Rating:rating indicator blankrating indicator blankrating indicator blankrating indicator blankrating indicator blank / 0
PoorBest 
Development
Tuesday, 05 April 2005 04:00
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