verwendetes Datenbanksystem: MS SQLServer 2012 Express
Hallo zusammen,
folgende Situation: Ich versuche zum ersten mal eine Anwendung mit Datenbankanbindung zu schreiben, bin also noch ein ziemlicher Neuling in Sachen C#. Funktioniert bis jetzt auch relativ gut. Nur habe ich gerade das Problem, dass ich versuche mittels JOIN Daten mit einer Bedingung aus zwei Tabellen zu holen und diese in einem DataGridView anzeigen zu lassen. Nur krieg ich entweder ein leeres DataGridView oder eine SQLException von wegen "Falsche Syntax in der Nähe von 'Tische'".
private void Form_Anzeige_Load(object sender, EventArgs e)
{
klasse = this.CustomValueKlasse.Trim();
jahr = this.CustomValueJahr.Trim();
alle = this.CustomValueAlle.Trim();
MessageBox.Show("Klasse: " + klasse + "\nJahr: " + jahr + "\nalle: " + alle, "test", MessageBoxButtons.OK, MessageBoxIcon.Hand);
con = new SqlConnection();
con.ConnectionString =
@"Data Source=.\SQLEXPRESS;AttachDbFilename="+
@"C:\Users\Vince\Documents\Visual Studio 2010\Projects\UnescoTest\UnescoForm\Unesco.mdf;"+
@"Integrated Security=True;Connect Timeout=30;User Instance=True";
try
{
con.Open();
if (jahr != "" && klasse == "")
{
adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Datum=" + jahr + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);
}
if (klasse != "" && jahr == "")
{
adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Klasse=" + klasse + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);
}
if (jahr != "" && klasse != "")
{
adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Datum=" + jahr + "AND Klasse=" + klasse + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);
}
if (alle == "*")
{
adap = new SqlDataAdapter("SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische", con);
}
MessageBox.Show("Adap: " + adap, "Adap INhalt", MessageBoxButtons.OK, MessageBoxIcon.Information);
ds = new System.Data.DataSet();
adap.Fill(ds, "Anzeige");
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show("Fehler:\n\n" + ex, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Schon im Voraus vielen Dank für eure Hilfe
Gruß
SandmanSlim
entweder ein leeres DataGridView
Entweder passt die WHERE-Klausel nicht oder die JOIN-Bedingung findet keine passenden Datensätze.
oder eine SQLException von wegen "Falsche Syntax in der Nähe von 'Tische'".
Der Fehler liegt wohl eindeutig hier:
SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische
Zur Verdeutlichung:
SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische
Die Tische haben da nichts zu suchen...
Ansonsten schließe ich mich FZelle an.