Windows Form - Verbindung zu Access und SQL Query

10/13/2017 18:39 aeo#1
Hallo,

ich habe eine Windows Form in der ich beim Programmstart eine Datenbankverbindung zu Access aufbauen möchte.

Ist die Verbindung aufgebaut, so soll man durch Eingabe am Steuerelement [TEXTBOX] und durch Drücken eines Buttons eine Parametrized SQL Query senden und das Resultat in das DataGridView eingebunden werden.

Die Verbindung zur Datenbank habe ich mittels Visual Studio und seinen Datenquellen-Wizard hergestellt, doch mir wird leider alles angezeigt.

Ich kenne die Sprache C# bzw. mich mit der .NET Programmierung nicht aus, da die Anwendung nur auf die Aufgabe beschränkt wird, reicht mir die Zeit nicht, noch mich mit der Sprache zu befassen.

Kann mir jemand etwas zur Hand gehen?

Derzeitig habe ich folgenden Code, der leider noch nicht funktioniert.
Code:
        private void button1_Click(object sender, EventArgs e)
        {
            var kundenNr = kundenr.Text;
            var nachname = lname.Text;
            var vorname = vname.Text;

            using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\devSec\Documents\Database2.accdb"))
            {
                try { 
                    System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter();
                    System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand("SELECT kunde.name FROM kunde WHERE kunde.name = ?", conn);
                    command.Parameters.Add(new System.Data.OleDb.OleDbParameter("kundenr", kundenr.Text));
                    System.Data.OleDb.OleDbDataReader reader = command.ExecuteReader();
                }
                catch (System.Data.OleDb.OleDbException se)
                {
                    // error handling
                }
            }

            
        }
Warum markiert mir mein IDE beim Debuggen die Zeile mit OleDbDataReader Object?

Edit2:/
Es lag daran, dass ich die Connection noch vorab nicht geöffnet hatte. Wie kriege ich das Resultat in das DataGridView bzw. auf meine Windows Form?

Edit3:/ Ich habe es nun gelöst in dem ich ein DataTable erstellt und mit Load() die Datensätze aus DataReader in die DataTable geladen habe. Anschließend war nur noch das Binden des DataSource am DataGridView notwendig.
10/14/2017 12:14 C_O_R_E#2
Quote:
private void button1_Click(object sender, EventArgs e)
{
var kundenNr = kundenr.Text;
var nachname = lname.Text;
var vorname = vname.Text;

using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Micro soft.ACE.OLEDB.12.0;Data Source=C:\Users\devSec\Documents\Database2.accdb") )
{
try {
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter();
System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand("SELECT kunde.name FROM kunde WHERE kunde.name = ?", conn);
command.Parameters.Add(new System.Data.OleDb.OleDbParameter("kundenr", kundenr.Text));
System.Data.OleDb.OleDbDataReader reader = command.ExecuteReader();
}
catch (System.Data.OleDb.OleDbException se)
{
// error handling
}
}


}
Du hast dort ebenfalls ein kleinen Fehler.
So wie ich die Information aus dem Quellcode extrahiere, möchtest du
durch eine Eingabe einer CustomerID, den zugehörigen Datensatz erhalten.
Du vergleichst aber:

Code:
System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand("SELECT kunde.name FROM kunde WHERE [B]kunde.name = ?[/B]", conn);
Es sollte aber so lauten:

Code:
System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand("SELECT kunde.[deineSpalteFürKundenNR] FROM kunde WHERE kunde.[deineSpalteFürKundenNR]= ?", conn);