简体   繁体   English

com.microsoft.sqlserver.jdbc.SQLServerException: '=' 附近的语法不正确

[英]com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '='

 private void DN_ButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(tenDN.getText().equals("")){
            JOptionPane.showMessageDialog(this, "Dien ten dang nhap");
        }else if(Matkhau.getText().equals("")){
            JOptionPane.showMessageDialog(this, "Dien mat khau");
        }else {
            try {
                String  DB_URL = "jdbc:sqlserver://localhost;"
                + "databaseName=QLSinhVien;"
                + "user=sa;"
                + "password=123";
                Connection conn = DriverManager.getConnection(DB_URL);
                String sql;
                sql = "SELECT * FROM SINHVIEN"
                      + "WHERE TENDN = ? AND MATKHAU = HASHBYTES('MD5',?)";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setString(1, tenDN.getText());
                ps.setString(2, Matkhau.getText());
                System.out.println("a");
                ResultSet rs = ps.executeQuery();
                System.out.println("e");
                if(rs.next()){
                    JOptionPane.showMessageDialog(this,"Dang nhap thanh cong");
                }else{
                    sql = "SELECT * FROM NHANVIEN"
                        + "WHERE TENDN = ? AND MATKHAU = HASHBYTES('SHA1',?)";
                    ps = conn.prepareStatement(sql);
                    ps.setString(1, tenDN.getText());
                    ps.setString(2, Matkhau.getText());
                    rs = ps.executeQuery();
                    System.out.println(sql);
                    if(rs.next()){
                        JOptionPane.showMessageDialog(this,"Dang nhap thanh cong");
                    }else{
                        JOptionPane.showMessageDialog(this,"Ten dang nhap va mat khau khong hop le");
                    }
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    }

I don't know what's wrong with this code.我不知道这段代码有什么问题。 Help me, please !!!!!请帮帮我 !!!!! I used NetBeans and SQL server 2019我使用了 NetBeans 和 SQL Server 2019

A space is missing in both SQL queries before WHERE clause and breaking the line seems to be redundant: WHERE子句之前的两个 SQL 查询中都缺少一个空格,并且断行似乎是多余的:

So the query string should be:所以查询字符串应该是:

String sql = "SELECT * FROM SINHVIEN WHERE TENDN = ? AND MATKHAU = HASHBYTES('MD5',?)";

// or 
String sql = "SELECT * FROM SINHVIEN " // add a space here
           + "WHERE TENDN = ? AND MATKHAU = HASHBYTES('MD5',?)";

Similarly, the other query against NHANVIEN table needs to be modified:同样,针对NHANVIEN表的另一个查询需要修改:

sql = "SELECT * FROM NHANVIEN WHERE TENDN = ? AND MATKHAU = HASHBYTES('SHA1',?)";

To avoid code duplication, fix closing of connection/prepared statements using try-with-resources the code may be refactored as follows:为避免代码重复,使用try-with-resources修复连接/准备语句的关闭,代码可以重构如下:

// Create constant connection string and SQL queries
private static final String DB_URL = 
    "jdbc:sqlserver://localhost;databaseName=QLSinhVien;user=sa;password=123";
private static final String SQL_1 = 
    "SELECT * FROM SINHVIEN WHERE TENDN = ? AND MATKHAU = HASHBYTES('MD5',?)";
private static final String SQL_2 = 
    "SELECT * FROM NHANVIEN WHERE TENDN = ? AND MATKHAU = HASHBYTES('SHA1',?)";


private void DN_ButtonActionPerformed(java.awt.event.ActionEvent evt) {
    String tenDnText = tenDN.getText();
    String matkhauText = Matkhau.getText();
    if (tenDnText.isEmpty()) {
        JOptionPane.showMessageDialog(this, "Dien ten dang nhap");
    } else if(matkhauText.isEmpty()){
        JOptionPane.showMessageDialog(this, "Dien mat khau");
    } else {
        // auto-close connection
        try (Connection conn = DriverManager.getConnection(DB_URL)) { 
            if (runSqlQuery(conn, SQL_1, tenDnText, matkhauText) || 
                runSqlQuery(conn, SQL_2, tenDnText, matkhauText)) {
                JOptionPane.showMessageDialog(this, "Dang nhap thanh cong");
            } else {
                JOptionPane.showMessageDialog(this, 
                    "Ten dang nhap va mat khau khong hop le");
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}

private boolean runSqlQuery(Connection conn, String sql, String... params) 
    throws Exception {
    // auto-close prepared statement
    try (PreparedStatement ps = conn.prepareStatement(sql)) { 
        if (params.length > 1) {
            ps.setString(1, params[0]);
        }
        if (params.length > 2) {
            ps.setString(2, params[1]);
        }
        return ps.executeQuery().next(); // using implicit ResultSet
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 com.microsoft.sqlserver.jdbc.SQLServerexception:'='附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerexception:incorrect syntax near'=' com.microsoft.sqlserver.jdbc.SQLServerException:'GO'附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'GO' com.microsoft.sqlserver.jdbc.SQLServerException: ')' 附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ')' com.microsoft.sqlserver.jdbc.SQLServerException: '|' 附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '|' Microsoft SQL Server JPA存储过程com.microsoft.sqlserver.jdbc.SQLServerException:'{'附近的语法不正确 - Microsoft SQL Server JPA Stored Procedure com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '{' com.microsoft.sqlserver.jdbc.SQLServerException:'@ P0'附近的语法不正确 - com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0' Vaadin错误:com.microsoft.sqlserver.jdbc.SQLServerException:'LIMIT'附近的语法不正确 - Vaadin error : com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'LIMIT' com.microsoft.sqlserver.jdbc.SQLServerException 与 jpa - com.microsoft.sqlserver.jdbc.SQLServerException with jpa Error-com.microsoft.sqlserver.jdbc.SQLServerException:关键字“ BY”附近的语法不正确 - Error-com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'BY' com.microsoft.sqlserver.jdbc.SQLServerException:用户登录失败 - com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM