我试图创建一个基于用户角色的登录程序,但我的代码显示如下错误:
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'的正确语法?密码是什么?”在1号线
void fetchUserData() {
String query ="SELECT * FROM users WHERE Email LIKE ? AND Password LIKE ? ";
String EmailValue = Email.getText();
String PasswordValue = new String(Password.getPassword());
try {
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1,EmailValue);
ps.setString(2,PasswordValue);
ResultSet rs = ps.executeQuery(query);
ps.executeQuery();
while(rs.next()) {
String Email = rs.getString("Email");
String Password = rs.getString("Password");
String Role = rs.getString("Role");
if (Email.equals(EmailValue) && Password.equals(PasswordValue)) {
if (Role.equals("Admin")) {
AdminMenu.setVisible(true);
} else {
Menu.setVisible(true);
}
}else {
System.out.println("Fail");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
这是我的连接课程
public class Connect {
private Statement st;
Connection connection;
public Connect() {
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","");
st = connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean executeUpdate(String query) {
try {
st.executeUpdate(query);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
public ResultSet executeQuery(String query) {
ResultSet rs = null;
try {
rs = st.executeQuery(query);
}catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public PreparedStatement prepareStatement(String query) {
PreparedStatement ps = null;
try {
ps = connection.prepareStatement(query);
}catch (SQLException e) {
e.printStackTrace();
}
return ps;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
谢谢你的帮助。
实际上,您并没有执行preparedStatement,而是执行一个原始查询。这是因为您再次传入查询字符串。
改用ps.executeQuery()
。
顺便说一下,用“like”来表示这是一个非常糟糕的主意。用户只需对两个值使用“%”即可登录。
问题内容: 我正在使用和建立库存系统。查询表时出现此错误。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取在’?’附近使用的正确语法。在第1行 下面是代码 问题答案: ResultSet rsOrders = stmt2.executeQuery(order
嘿,我正在使用下面的代码创建一个名为user的表,其中包含一些外键 我认为这段代码是正确的,但它仍然会产生以下错误 这个代码真的正确吗?如果没有,我如何修复它?此代码的正确变体是什么?感谢您的帮助。 编辑:我正在phpmyadmin上测试此代码 问候。
我想从下拉选择设备id后,其他字段值自动取入文本字段。但得到以下错误: 在此输入图像说明
我试图将以下数据插入数据库。但它给了我上面这个错误。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解第1行中“”附近使用的正确语法。 我试过几种方法,但都没有修好。
我尝试使用preared语句向表中插入一个新值,但我获得了一个无法解决的语法错误。 Java代码: 错误代码: 我希望你能帮助我谢谢你。
我一直得到的错误:- “您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解在第1行的“Password='evertonblues'Forename='Josh'lasname='Edmondson'='199'附近使用的正确语法。” 运行我的更新查询时出错。