これで多くの質問がありました。MANY他のスレッドですが、決して完全な回答は得られません。 私は基本的なコードを持っていて、新しいユーザーをMySQLデータベース(localhost)にすべて挿入しています。以前は基本的に同じコードを実行していました。 文章の長さではありません。列は少なくとも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"は、コードを再利用して領域を節約するために、SQLメソッドを記述した別のクラス(Query)です。 ああ、 ".Encriptar()"は単にパスワードをハッシュする方法です。 ここにある:
public static long Execute(string query)
{
var con = Connection.Create();
var command = new MySqlCommand(query, con);
command.ExecuteNonQuery();
con.Close();
return command.LastInsertedId;
}
だから私は、以前のアプリとまったく同じことをしたし、うまく働いていたので、これは、機能しない理由...私は知りません! 誰か助けてください。 Btw、私はここに新しいです、もし私が正しく投稿を書いていなかったら、申し訳ありません。
*最初に行うべきことは、そのようなSQLの構築をやめることです。毎回パラメータ化されたSQLを使用します。 –
あなたは 'INSERT'ステートメントの構文が間違っています。 https://www.tutorialspoint.com/sql/sql-insert-query.htmまたはhttps://www.tutorialspoint.com/mysql/mysql-insert-query.htm –
エラーを読んで、クエリ文字列? – CodeCaster