2016-07-25 2 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(); 

Я хочу, чтобы вставить значение из запроса выбора «ProductID», я проверить эту строку ProductID работает, а если я просто вставить cmd.Parameters.AddWithValue("?ProductID", "1");, он тоже работает, но когда я ставлю productID в parameters.addwithvalue, он не работает. Это всего лишь одна из функций для всего проекта, поэтому я создаю соединение с базой данных mysql снаружи.Вставить значение из выбранного запроса

+2

Вы _could_ просто используете 'INSERT INTO ... SELECT'. Но вы должны параметризовать предложение 'WHERE', чтобы избежать SQL-инъекции. –

ответ

0

Где вы используете запрос ProductID. Вы не используете запрос ProductID для получения ProductId и используете его в последующем запросе.

Сначала введите запрос ProductID, чтобы получить идентификатор продукта из вашей таблицы, а затем используйте идентификатор продукта в запросе вставки. См. Пример кода ниже.

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

Спасибо, что он работает –

0

изменить ниже линии от

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

в

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

Я пробовал эту работу, но все еще делаю. Я пытаюсь изменить его на «ProductID», ProductType); и если, например, значение типа продукта равно 1, оно отлично работает, но когда я вернусь к идентификатору продукта, который является запросом на выбор, он не работает. –

+0

У вас есть отлажены? какое значение вы получаете для ProductID –

+0

@StevenHuang вы пытались заменить '?' на '@' ?? –

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(); 

изменить значение? на @ надеюсь, что это помогает. или, может быть, ваш ProductID является автоматическим инкрементным первичным ключом, не может быть сделано на нем.

+0

нет Это не работает :( –

+0

является вашим продуктом, является первичным ключом или нет ? –

Смежные вопросы