【问题标题】:Sqite select query row doesn't workSqlite 选择查询行不起作用
【发布时间】:2016-03-30 20:25:26
【问题描述】:

我使用 JDBC 从 sqlite 数据库中获取数据。在数据库中,我有 3 列 - 登录名、密码和角色。我尝试通过登录查找行,但它不起作用,当我尝试getString("password")"role" 时出现异常,错误在哪里?谢谢

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

【问题讨论】:

  • 用你的问题打印异常日志
  • java.sql.SQLException:没有这样的列:org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:48) 的 org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet) 的“密码” .java:437) 在 SE_10_JDBC.task1.DataBaseHandler.readUserFromDB(DataBaseHandler.java:56) 在 SE_10_JDBC.task1.MainTask1.main(MainTask1.java:15) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  • users 表应该有密码列,异常很清楚地回答了你的问题
  • 但列密码和角色存在
  • 并且该代码可以正常工作:

标签: java


【解决方案1】:

您可以查看返回的列名。

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

【讨论】:

  • 这意味着你的查询是错误的。或者你的表实际上并没有你认为的那样......或者什么......当你“SELECT * FROM users”时呢?
  • 看起来PRAGMA table_info([users]); 可能会给出类似于来自stackoverflow.com/a/7679086/2801237 的'MySQL's 'describe users' 的结果,以便您可以检查您的表
  • 你是对的,谢谢,我找到了我做错的地方。我错误地使用了 if(hasLogin())
【解决方案2】:
ResultSetMetaData metaData = resultSet.getMetaData();
int count = metaData.getColumnCount(); //number of column
String columnName[] = new String[count];

for (int i = 1; i <= count; i++)
{
  metaData.getColumnLabel(i)); 
}

参考这个答案..ans 看看你的列在结果集中的名称是什么 http://stackoverflow.com/questions/19094999/java-how-to-get-column-name-on-result-set

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多