Aus Datenbank(MSSQL) mit C# zeichnen

Kai_Jack

Erfahrenes Mitglied
Hallo Freunde,
ich brauche Hilfe, bin Anfänger. Ich möchte gerne aus einer Datenbank die ich mit MSSQL erstellt habe Koordinaten auslesen und diese in C# mit GDI+ zeichnen. Ich kriege das auslesen hin, aber das Konvertieren der Daten zum Zeichnen klappt nicht. Folgendes habe ich bisher erreicht: Das auskommentierte war nur ein Versuch, ob das Zeichnen überhaupt klappt und ist natürlich nicht richtig.

private void pictureBox1_Click(object sender, System.EventArgs e)
{
Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle);

//PointClass pt1 = new PointClass();

//PointClass pt2 = new PointClass();

//g.DrawLine(Pens.Blue,pt1,pt2);


SqlConnection dc = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;"+"Initial Catalog=Test");

dc.Open();

SqlCommand comm1 = dc.CreateCommand();
SqlCommand comm2 = dc.CreateCommand();


comm1.CommandText = "SELECT y_Koor from Punkt WHERE Punkt_ID = '1'";
comm2.CommandText = "SELECT x_Koor from Punkt WHERE Punkt_ID = '1'";
SqlDataReader read = comm1.ExecuteReader();

//g.DrawLine(Pens.Blue,pt1,pt2);

this.sqlDataAdapter1.Fill(this.mein_Daten_Set21,0,0,"Punkte_DB");

g.DrawLine(Pens.Blue,5,5,100,100);
this.sqlSelectCommand1.CommandText = (!)
HIER KOMME ICH NICHT WEITER :suspekt:
}

Vielen Dank für die Hilfe :)
Jack
 

broetchen

Erfahrenes Mitglied
Hi!

Ich weiß nicht, ob ich dich richtig verstanden habe, aber ich versuche es mal.

Ich gehe davon aus, dass deine Koordinaten in der DB als int-Werte vorliegen.
Code:
private void pictureBox1_Click(object sender, System.EventArgs e)
{
  SqlConnection conn = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;"+"Initial Catalog=Test");

  SqlCommand comm = new SqlCommand("SELECT x_Koor, y_Koor FROM punkt WHERE punkt_id=1",conn);

  SqlDataReader datread = comm.ExecuteReader();

  Graphics g = this.pictureBox1.CreateGraphics();

  if(datread.Read())
  {
     //Daten vorhanden
     int x = datread.GetInt32(0);
     int y = datread.GetInt32(1);
     //hier könnte man auch int x = (int)datread["x_Koor"]; machen

    g.DrawLine(Pens.Blue, 0, 0, x, y); //oder was auch immer du zeichnen willst
  }
  else
  {
    //keine Daten vorhanden
    //Fehler
  }

  datread.Close();
  conn.Close();
}

So sollte es vom Prinzip her funktionieren. Ob die Koordinaten in der DB jetzt passend für dein Fenster sind, weiß ich nicht.

mfg broetchen

P.S.: Benutz bitte das Code-Tag, sieht besser aus und ist lesbarer ;-)
 

Kai_Jack

Erfahrenes Mitglied
Vielen Dank, es hat nach einigen Fehlversuchen geklappt, aber dein Code war richtig, hatte was in der Datenbank falsch.

Was ist das in Klammern, also die [0] und die [1], welche Bedeutung hat das ?
Das ToolTip welches die Erklärung liefert, ist etwas komisch formuliert.

Code:
int x = read.GetInt32(0);
	   int y = read.GetInt32(1);

Noch eine Frage:

Kannst du mir einen Tip geben wie ich eine Linie Zeichne und dann diese MausKoordinaten fange und in die Datenbank schreiben kann

Besten Dank nochmal für die superfaste Hilfe
Jack :)
 

broetchen

Erfahrenes Mitglied
Die Nummern in den Klammern sind die Spalten-Indizes (also aus welcher Spalte er das int fischen soll).
Daher die Version mit dem Indexer, das funktioniert auch.