Java 格式化准备好的语句以查询数据库
我正在做一个创建登录页面的项目。为此,我使用一个数据库来存储用户信息。到目前为止,我的数据库中有四列:用户名、密码、电子邮件和管理员 现在,我在使用准备好的语句/结果集格式访问该数据库时遇到问题。现在我进入第三次返回,打印输入的用户名和密码,然后生成一个错误。我是否将准备好的报表格式设置错误 好的,根据之前的回答,我已经更正了大部分代码谢谢,现在我在打印结果集时出现了以下错误: java.sql.SQLException:列索引超出范围,2>1 有什么想法吗 我的代码:Java 格式化准备好的语句以查询数据库,java,database,prepared-statement,resultset,Java,Database,Prepared Statement,Resultset,我正在做一个创建登录页面的项目。为此,我使用一个数据库来存储用户信息。到目前为止,我的数据库中有四列:用户名、密码、电子邮件和管理员 现在,我在使用准备好的语句/结果集格式访问该数据库时遇到问题。现在我进入第三次返回,打印输入的用户名和密码,然后生成一个错误。我是否将准备好的报表格式设置错误 好的,根据之前的回答,我已经更正了大部分代码谢谢,现在我在打印结果集时出现了以下错误: java.sql.SQLException:列索引超出范围,2>1 有什么想法吗 我的代码: Properti
Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "root");
props.setProperty("databaseName", "dbname");
String ret = ERROR;
Connection myCon = null;
try{
System.out.println("got here 1!");
Class.forName ("com.mysql.jdbc.Driver").newInstance();
System.out.println("got here 2!");
myCon = DriverManager.getConnection("jdbc:mysql://ipaddresshere:3306/dbname",props);
System.out.println("got here 3!");
System.out.println(username);
System.out.println(password);
String dbQuery = "SELECT count(*) FROM loginTestTable where username = "+username+" AND password = "+password+"";
//PreparedStatement prep = myCon.prepareStatement(dbQuery);"
PreparedStatement ps = myCon.prepareStatement(dbQuery);
ps.setString(1, username);
ps.setString(2, password);
ResultSet result = ps.executeQuery();
System.out.println("got here 4!");
while (result.next()) {
System.out.println("got here 5!");
ret = SUCCESS;
System.out.println("username: "+result.getString(1)+" password: "+result.getString(2)+" email: "+result.getString(3));
if(result.getString(4).toLowerCase()=="YES"){
ret = "admin";
}
}
}catch(Exception e){
System.out.println("arg there be an error me matey!");
ret = ERROR;
}finally{
if(myCon!=null){
try{
myCon.close();
}catch (Exception e){
}
}
}
return ret;
您的代码存在多个问题: 首先,您缺少用户名和密码的引号 其次,除非您使用占位符定义查询,否则PreparedStatementsetString方法无效?像 第三,决不能将字符串与等式==运算符进行比较。使用String.equals作为 更改行:
String dbQuery = "SELECT count(*) FROM loginTestTable where username = "+username+" AND password = "+password+"";
作者:
非常有用,但当我进入System.out.println时,用户名:+result.getString1+密码:+result.getString2;我还是会扔一个error@Missmuffut,这是因为您选择了Count*而不是table columns。切换到从…选择*。。。获取所有值。
String dbQuery = "SELECT count(*) FROM loginTestTable " +
"where username = ? AND password = ?";
// also note you need toUpperCase() here
"YES".equals(result.getString(4).toUpperCase());
String dbQuery = "SELECT count(*) FROM loginTestTable where username = "+username+" AND password = "+password+"";
String dbQuery = "SELECT count(*) FROM loginTestTable where username = ? AND password = ?";