不接受Java JDBC查询

时间:2015-09-24 13:25:54

标签: java mysql jdbc

嘿我正在制作一个小的webapp并且在其中有一个java文件,其中包含连接数据库和获取数据的函数。 但我得到一个例外,任何人都知道为什么,因为如果我是对的,我的查询是有效的。

我使用eclipse和mysql工作台。

功能:

import java.sql.*;

public class Functions {
    public void dbConn(String nVal, String inpVal){

        System.out.println("Running function...");

        if(nVal != null || inpVal != null){
            String sqlSerch;
            if(nVal.equals("name")){
                sqlSerch = "ID, aNaam FROM profiles WHERE naam = 'casper'";
            }else{
                sqlSerch = "naam, aNaam FROM profiles WHERE ID = " + inpVal;
            }

            //driver / db path
                final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
                final String DB_URL = "jdbc:mysql://localhost:3306/profile";
                //DB user&password
                final String USER = "root";
                final String PASS = "";
                //declare con & sql var
                Connection conn = null;
                Statement stmt = null;
                //register jdbc driver
                try{
                    Class.forName(JDBC_DRIVER);
                    //make a connection
                    conn = DriverManager.getConnection(DB_URL,USER,PASS);
                    //SQL Statement
                    stmt = conn.createStatement();
                    String sql = "SELECT "+ sqlSerch;
                    ResultSet rs = stmt.executeQuery(sql);

                    //Declareer variablen met data uit db
                    //int id = rs.getInt("ID");
                    String naam = rs.getString("naam");
                    String aNaam = rs.getString("aNaam");

                    System.out.println( naam + aNaam);


                    rs.close();
                    stmt.close();
                    conn.close();

                }catch(Exception e){
                    System.out.println(e);
                }


                System.out.println(" - " + nVal + " - " + inpVal);


        }
    }
}

异常:

  

java.sql.SQLException:未找到列'naam'。

数据库结构:

enter image description here

提前谢谢你,

卡斯帕

2 个答案:

答案 0 :(得分:2)

当您通过 nVal 参数收到“姓名”时,只会选择 ID aNaam 列。

因此,如果您尝试从 ResultSet 获取 naam 的值,则会获得异常

此外,我建议将查询结果限制为1,因为您使用WHERE子句与 naam ID ,这似乎不是唯一的,除非有屏幕截图中没有包含一些约束。

希望这会有所帮助。

答案 1 :(得分:1)

您分支并创建查询:

        if(nVal.equals("name")){
            sqlSerch = "ID, aNaam FROM profiles WHERE naam = 'casper'";
        }else{
            sqlSerch = "naam, aNaam FROM profiles WHERE ID = " + inpVal;
        }

然后,无论分支如何,您都会获得结果集值:

        String naam = rs.getString("naam");
        String aNaam = rs.getString("aNaam");

但是“naam”不会出现在你的“ID,aNaam”搜索中。

一般来说,一个好的经验法则是始终返回相同的列。