2016-07-25 15 views
0
 string ProductType = comboBoxProductType.Text; 
     string ProductID = "Select ProductID from Productinformation where Name = '" + ProductType + "'"; 
     string query = "Insert into CustStoreProd (ProductID) VALUES (?ProductID)"; 
     MySqlCommand cmd = new MySqlCommand(query, mySQLconnection); 
     cmd.Parameters.AddWithValue("?ProductID", "ProductID"); 
     cmd.ExecuteNonQuery(); 

ich den Wert aus einer Auswahlabfrage „ProductID“ eingefügt werden soll, teste ich, dass String ProductID funktioniert, und wenn ich ein cmd.Parameters.AddWithValue("?ProductID", "1"); nur einfügen, es funktioniert auch, aber wenn ich setze productID in die parameters.addwithvalue, es funktioniert nicht. Es ist nur eine der Funktionen für das gesamte Projekt, also erstelle ich die mysql-Datenbankverbindung außerhalb.Legen Sie einen Wert aus einer Auswahlabfrage

+2

Sie _could_ verwenden Sie einfach 'INSERT INTO ... SELECT'. Sie sollten jedoch Ihre 'WHERE'-Klausel parametrisieren, um SQL-Injection zu vermeiden. –

Antwort

0

Wo führen Sie die Abfrage ProductID aus. Sie führen nicht die ProductID der Abfrage aus, um ProductId abzurufen, und verwenden sie in der nachfolgenden Abfrage.

Führen Sie zunächst ProductID-Abfrage aus, um die Produkt-ID aus Ihrer Tabelle abzurufen, und verwenden Sie dann die Produkt-ID in der Einfügeabfrage. Siehe Beispielcode unten.

string ProductType = comboBoxProductType.Text; 
     string ProductID = "Select ProductID from Productinformation where Name = '" + ProductType + "'"; 
     string query = "Insert into CustStoreProd (ProductID) VALUES (?ProductID)"; 
     MySqlCommand cmd = new MySqlCommand(ProductID, mySQLconnection); 
int pid = Convert.ToInt32(cmd.ExecuteScalar()); //assuming product id is integer 
     cmd.CommandText = query; 
     cmd.Parameters.AddWithValue("?ProductID", pid); 
     cmd.ExecuteNonQuery(); 
+0

Vielen Dank, es funktioniert –

0

unter Leitung von

ändern

cmd.Parameters.AddWithValue("?ProductID", "ProductID");

zu

cmd.Parameters.AddWithValue("?ProductID", ProductID); //Remove "" around productID 
+0

Ich habe das versucht aber immernoch dopen Arbeit. Ich versuche, es zu ändern ("? ProductID", ProductType); und wenn der Wert des Produkttyps beispielsweise 1 ist, funktioniert es gut, aber wenn ich zurück zu ProductID auswähle, die die Auswahlabfrage ist, funktioniert es nicht –

+0

Haben Sie debuggte? Welchen Wert erhalten Sie für ProductID? –

+0

@StevenHuang Haben Sie versucht, '?' durch '@' ?? zu ersetzen? –

0

es so versuchen:

string ProductType = comboBoxProductType.Text; 
     string ProductID = "Select ProductID from Productinformation where Name = '" + ProductType + "'"; 
     string query = "Insert into CustStoreProd (ProductID) VALUES (@ProductID)"; 
     MySqlCommand cmd = new MySqlCommand(query, mySQLconnection); 
     cmd.Parameters.AddWithValue("@ProductID", "ProductID"); 
     cmd.ExecuteNonQuery(); 

Änderung des Wertes? um zu hoffen, dass es hilft. oder vielleicht ist Ihre ProductID ein automatischer inkrementeller Primärschlüssel, kann nicht darauf ausgeführt werden.

+0

nein Es funktioniert nicht :( –

+0

ist Ihre Produkt-ID ist ein Primärschlüssel oder nicht ? –

Verwandte Themen