Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sqite select查询行不工作_Java - Fatal编程技术网

Java Sqite select查询行不工作

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:");

我使用JDBC从sqlite数据库获取数据。在DB中,我有3列-登录、密码和角色。我尝试通过登录查找行,但它不起作用,当我尝试getStringpassword或role时,我有一个exeption,错误在哪里?谢谢

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);