私のJavaプログラムでSQL文を実行できない理由はまだわかりませんでしたが、ワークベンチ!SEVERE:null com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 'where句'の 'Admin'列が不明です
ユーザーが登録またはログインできるインターフェイスを作成しようとしています。登録するには 、私はこのエラーがあります:
SEVERE: null com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'Admin' in 'field list'
私はクリアボタンをクリックすると、タイプがOKなら、私はそれがない。また、私はワークベンチ
で見ることができるデータベースにユーザ名「admin」を持っています文字列が空でelseブロックを実行しているので、登録のエラーを出さず、コードを登録しようとする部分をスキップするので、データのテーブルを見ることができます。
(MyUserAppクラスのコード)
private void RegisterButtonActionPerformed(java.awt.event.ActionEvent evt) {
String username, password, address, dob;
try {
// TODO Register very important too!
username = newUsernameField.getText();
password = passwordField2.getText();
address = addressField.getText();
dob = dateofbField.getText();
if(username == null || password == null || username.isEmpty() || password.isEmpty() || password.length() < 6)
jLabel6.setText("The information you typed in is not valid. ");
else{
this.app.registerUser(app, username, password, dob, address);
}
String u = this.app.showDB(app);
showTableDB.setText(u);
} catch (SQLException ex) {
Logger.getLogger(UserAppUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
(UIクラスのコード)
public void registerUser(MyUserApp app, String username, String pw, String dob, String address) throws SQLException{
String sb = "INSERT INTO javabase.user (iduser, username, password, date_of_birth, address)\n VALUES (" + app.incID()+", "+username+", "+pw+", "+dob+", "+address +");";
PreparedStatement statement = app.getCon().prepareStatement(sb);
statement.execute();
}
にログインしようとすると、私がしようとすると、この問題が発生した場合に、この問題が発生しました登録する: https://prnt.sc/gak3uh
ユーザーがログインするコードは、基本的にこれです:この1を呼び出すUIクラス、上
this.app.login(this.app, username, pw);
:
public void login(MyUserApp app, String user, String pw) throws SQLException{
String sql = "SELECT * FROM javabase.user WHERE username = "+ user +" and password = "+pw+";";
PreparedStatement statement = app.getCon().prepareStatement(sql);
statement.execute();
}
を使用するには、クエリパラメータを使用することを学びます。クエリ文字列をマージしないでください。そうすると、このようなデバッグの難しい問題が発生する可能性があります。 –
どういう意味ですか? +と文字列の連結? –
私はstringbuilderを前にやっていましたが、うまくいきませんでした。そして、文字列全体を処理して、エラーが何かを確認しました。なぜなら、私はコマンドをワークベンチに置くと動作します...しかし、なぜか、前もってありがとう –