2017-02-23 20 views
-3

Im с трудным решением этой ошибки около MySQL Syntax.Ошибка синтаксиса MySQL INSERT рядом с '' в строке 1 visual C#

Вот сообщение MySQL syntax

try 
     { 
      SQL = "INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no) VALUES (NULL, '" + cmbbxPaymentType.Text + "', CURRENT_DATE(), CURRENT_TIME(), '" + txtbxPaymentAmt.Text + "', '" + msktxbxStudNo.Text + "'"; 
      // INSERT INTO `studentpaymentqueuing`.`payment_history_tbl` (`id`, `payment_type`, `date`, `time`, `amount`, `student_no`) VALUES (NULL, 'Certificate of Enrollment', '2017-02-24', '10:19:28', '60.00', '13-0695'); 
      cmd = new MySqlCommand(SQL, conn); 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 

      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

Ошибка:

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса использовать около «» в строке 1

Любая идея?

+1

Ваш код будет, конечно, потерпеть неудачу, если кто-то положил "или просто» Использовать параметр SQL, чтобы исправить это – Adrian

+1

Вот идея ... код в этом вопросе следует шаблон, который мы часто видим в коде, который уязвим для SQL Injection. – spencer7593

ответ

0

Вы пропустили )?

SQL = "INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no) VALUES (NULL, '" + cmbbxPaymentType.Text + "', CURRENT_DATE(), CURRENT_TIME(), '" + msktxbxStudNo.Text + "')"; 
+0

Oh! my bad -___- Я думаю, что я был так привык к 'SELECT', который не имеет«) ». В конце концов, спасибо :) – HelpMePlease

+2

Я думал, что MySql не полностью потерян и поддерживает параметризованные запросы (например, http://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp), вы уверены, что рекомендуете рекомендации в ответе? –

+0

@AlexeiLevenkov You абсолютно прав, вот только ответ, может быть, не рекомендуется, но ответ - ответ, если ответ неправильный, вы можете сказать мне, что я исправлю это. Если у вас есть другие лучшие ответы, тогда вы ответите здесь. Спасибо за внимание. – Blank

0

Использование String.Format может помочь вам получить красивый код и легко найти ошибку.
Пример:..


String query = String.Empty; 
query += String.Format("INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no)"); 
query += String.Format(" VALUES (NULL, '{0}', '{1}', {2}, '{3}', '{4}');", cmbbxPaymentType.Text, CURRENT_DATE(), CURRENT_TIME(), txtbxPaymentAmt.Text, msktxbxStudNo.Text);