好的,所以我在其他線程看到過這個問題,但從來沒有得到完整的答案(至少到目前爲止)。 所以我有一個基本的代碼來插入一個新的用戶的所有信息到一個MySQL數據庫(本地主機),我基本上做了相同的代碼以前,它的工作。 這不是句子的長度,因爲該列可以處理至少40個字符。ExecuteNonQuery()語法錯誤c#
錯誤:
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Clave='9cdfb439c7876e703e307864c9167a15'' at line 1'
我的代碼:
private void Button_Click(object sender, RoutedEventArgs e)
{
var nomCom = Nombre.Text + Apellido.Text;
/*var exists = Query.Check($"SELECT EXISTS(SELECT 1 FROM usuario WHERE Nombre_Usu='{NombreUsu.Text}'");
if (!exists)
{
MessageBox.Show("Nombre de usuario ya existe","VERIFIQUE",MessageBoxButton.OK,MessageBoxImage.Exclamation);
}
else
{*/
if (string.IsNullOrWhiteSpace(nomCom) || string.IsNullOrWhiteSpace(NombreUsu.Text) || txtContra.Password.ToString() != txtConfirmar.Password.ToString())
{
MessageBox.Show("Verifique los campos porfavor :)", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
Query.Execute($"INSERT usuario SET Nombre='{Nombre.Text}', Apellido='{Apellido.Text}', Nombre_Usu='{NombreUsu.Text}' Clave='{txtContra.Password.Encriptar()}'");
// }
}
好的,這是用於註冊形式/窗口中的代碼,其中用戶將輸入的數據,並插入到DB 。 「Query.Check」是另一個類(Query),我在其中編寫SQL方法,以重用代碼並節省空間。 哦,「。腳本()」只是一種散列密碼的方法。 這就是:
public static long Execute(string query)
{
var con = Connection.Create();
var command = new MySqlCommand(query, con);
command.ExecuteNonQuery();
con.Close();
return command.LastInsertedId;
}
所以...我不知道爲什麼這是行不通的,因爲我做了同樣的事情與以前的應用程序和工作就好了! 請有人幫助我。 順便說一句,我是新來的,很抱歉,如果我沒有正確寫信息。
要做的第一件事就是停止構建SQL。每次使用參數化的SQL。 –
您的'INSERT'語句使用的語法錯誤。 https://www.tutorialspoint.com/sql/sql-insert-query.htm或https://www.tutorialspoint.com/mysql/mysql-insert-query.htm –
您是否嘗試閱讀錯誤並查看您的請求參數? – CodeCaster