2016-06-22 5 views
0

angeben Ich versuche, eine Möglichkeit zu finden, eine Zelle in einem Parameter anzugeben. Ich versuche, "X" zu dem Text aus meiner Datenbank in einem DataGridView hinzuzufügen, und ich verwende den folgenden Code. Das Problem in diesem Code ist, dass es der gesamten Spalte das "X" hinzufügt, und ich frage mich, ob es eine Möglichkeit gibt, eine Zelle in einem Parameter zu wählen, da ich das "X" zu einer bestimmten Zelle hinzufügen möchte.Wie eine Zelle in Parameter in C#

private void table1Button_Click(object sender, EventArgs e) 
    { 
     string constring = "Data Source = localhost; port = 3306; username = root; password = 0159"; 
     string Query1 = @"Insert into TopShineDB.Table1 (Timee, CarColorNumber, Interior, Exterior) values(@Timee, @CarColorNumber, @Interior, @Exterior)"; 
     using (MySqlConnection conn1 = new MySqlConnection(constring)) 
     using (MySqlCommand command = new MySqlCommand(Query1, conn1)) 
     { 
      conn1.Open(); 

      command.Parameters.Add("@Timee", MySqlDbType.VarChar); 
      command.Parameters.Add("@CarColorNumber", MySqlDbType.VarChar); 
      command.Parameters.Add("@Interior", MySqlDbType.VarChar); 
      command.Parameters.Add("@Exterior", MySqlDbType.VarChar); 

      try 
      { 

       foreach (DataGridViewRow dr in dataGridView1.Rows) 
       { 
        command.Parameters["@Timee"].Value = dr.Cells[0].Value; 
        command.Parameters["@CarColorNumber"].Value = dr.Cells[1].Value; 
        if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow) 
        { 
         command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X"; 
        } 
        if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow) 
        { 
         command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X"; 
        } 

        command.ExecuteNonQuery(); 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 

dank

+0

Wenn Sie X nicht anhängen möchten, fügen Sie eine weitere Bedingung hinzu und * hängen Sie X nicht an. Sie überprüfen bereits die Farbe und ändern den zu speichernden Wert. Fügen Sie eine andere Bedingung, die nicht anhängen X –

+0

Es tut mir leid, ich glaube, Sie missverstanden, was ich meinte. Ich möchte X anfügen, aber nur an eine bestimmte Zelle und nicht an den ganzen Parameter. Der Code, den ich an die ganze Spalte angehängt habe. @PanagiotisKanavos –

+0

Zellen haben keine Bedeutung, wenn es um Abfrageparameter geht. Ein Parameter hat nur einen Wert, unabhängig davon, was Sie ihm zuweisen. –

Antwort

1

zunächst als gängige Praxis in einer beliebigen Programmiersprache würde ich ändern: sind

if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow) 
{ 
    command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X"; 
    command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X"; 
} 

als die beiden if-Anweisungen äquivalent:

if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow) 
{ 
    command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X"; 
} 
if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow) 
{ 
    command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X"; 
} 

zu. Für was genau verwenden Sie die BackColor der Zellen? Persönlich, wenn ich das Hinzufügen einer X zu Zelle erreichen wollte (2,3) zum Beispiel würde ich tun:

command.Parameters["@Interior"].Value = this.dataGridView1[2,3].Value + " X"; 
command.Parameters["@Exterior"].Value = this.dataGridView1[2,3].Value + " X"; 

anstatt durch jede Reihe von Iterieren und mehr bedingten Anweisungen zu tun.

Lassen Sie mich wissen, wenn dies das erreicht, was Sie wollen, sonst kann ich für Sie aktualisieren.

Viel Glück!

+0

Das ist eigentlich ein Teil meines Codes. Ich gebe dem Benutzer die Möglichkeit, die Farbe der Zelle zu ändern. Wenn der Benutzer jetzt GreenYellow auswählt, möchte ich, dass auf die Daten in der Zelle das "X" folgt, z. B. wenn die Zelle den Text "Mark" hat und der Benutzer die Farbe GreenYellow auswählt, wird sie in der Datenbank als "Mark X" gespeichert "Und wenn er es nicht tut, wird es normalerweise in der Datenbank gespeichert. Ich mache das, um mir zu helfen, die Farbe aus der Datenbank zu holen. Zum Beispiel mache ich eine if-Anweisung, wenn der Text mit "X" endet, dann setze die Hintergrundfarbe der Zelle auf GreenYellow. Danke für Ihre Hilfe. –

+0

Das Problem mit dem Code, den ich schrieb, ist, dass das "X" in der gesamten Spalte hinzugefügt wird. was ich will, ist, es zu einer bestimmten Zelle hinzuzufügen. –

+0

Oh okay Ich verstehe, was Sie jetzt sagen, ich denke ... Haben Sie versucht, einen weiteren Parameter zu "Befehl" für Cell, z. 'command.Parameters.AddWithValue (" @ Cell ", this.dataGridView1.CurrentCell);'? – Thom