Java Sqite select查询行不工作
我使用JDBC从sqlite数据库获取数据。在DB中,我有3列-登录、密码和角色。我尝试通过登录查找行,但它不起作用,当我尝试getStringpassword或role时,我有一个exeption,错误在哪里?谢谢Java Sqite select查询行不工作,java,Java,我使用JDBC从sqlite数据库获取数据。在DB中,我有3列-登录、密码和角色。我尝试通过登录查找行,但它不起作用,当我尝试getStringpassword或role时,我有一个exeption,错误在哪里?谢谢 resSet = statmt.executeQuery("SELECT * FROM users WHERE login='"+login+"';"); if( hasUser( login)){ System.out.println("User finded:");
resSet = statmt.executeQuery("SELECT * FROM users WHERE login='"+login+"';");
if( hasUser( login)){
System.out.println("User finded:");
while(resSet.next()) {
System.out.println("login = " + resSet.getString("login"));
// !exeption
System.out.println("password = " + resSet.getString("password"));
// !exeption
System.out.println("role = " + resSet.getString("role"));
System.out.println();
}
}else{
System.out.println( "User not found");
}
请参阅此答案。请查看结果集中列的名称
您可以检查返回的列名
ResultSetMetaData rsmd = resSet.getMetaData();
int colCount = rsmd.getColumnCount();
String rValue = "";
for (int i = 1; i <= colCount ; i++){
String name = rsmd.getColumnName(i);
rValue += name + " ";
}
System.out.println(rValue);
用您的问题打印异常日志java.sql.SQLException:在org.sqlite.jdbc3.JDBC3ResultSet.findColumnJDBC3ResultSet.java:48在org.sqlite.jdbc3.JDBC3ResultSet.getStringJDBC3ResultSet.java:437在SE_10_JDBC.task1.DataBaseHandler.readUserFromDBDataBaseHandler.java:56在SE_10_JDBC.task1.MainTask1.MainTask1.java:15在sun.reflect.NativeMethodAccessorImpl.invoke0Native Methodusers表中应该有密码列,异常非常清楚地回答了您的问题,但列密码和角色存在,代码工作正常:这意味着您的查询是错误的。或者你的桌子实际上没有你认为的那样。。。或者别的什么。。。当您从用户中选择*时会怎么样?看起来像PRAGMA table_info[users];可能会给出类似于“MySQL”的“描述用户”的结果,这样你们就可以检查你们的表格了。你们是对的,谢谢,我找到了我犯错误的地方。我不正确地使用了ifhasLogin
ResultSetMetaData rsmd = resSet.getMetaData();
int colCount = rsmd.getColumnCount();
String rValue = "";
for (int i = 1; i <= colCount ; i++){
String name = rsmd.getColumnName(i);
rValue += name + " ";
}
System.out.println(rValue);