Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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形式的jdbc查询_Jdbc - Fatal编程技术网

无法使用变量解决Java形式的jdbc查询

无法使用变量解决Java形式的jdbc查询,jdbc,Jdbc,sql3=从select+baseParam+/+denom+as eff中选择avgeff、mineff、maxeff;这是我想要其输出的查询。 当我执行代码时,我得到一个错误,即检查您的mysql版本的语法。我使用字符串来存储列的名称。我想找出2000个作业渲染的效率,即每个作业渲染的效率。但我得到的是所有作业的总效率。当我将sql语法与它们的直接列名一起使用时。我也对该查询进行了评论,以供参考。我希望找到每个作业渲染相对于其2000 JOBID的效率。底线是我想找到2000个JOBID的效

sql3=从select+baseParam+/+denom+as eff中选择avgeff、mineff、maxeff;这是我想要其输出的查询。 当我执行代码时,我得到一个错误,即检查您的mysql版本的语法。我使用字符串来存储列的名称。我想找出2000个作业渲染的效率,即每个作业渲染的效率。但我得到的是所有作业的总效率。当我将sql语法与它们的直接列名一起使用时。我也对该查询进行了评论,以供参考。我希望找到每个作业渲染相对于其2000 JOBID的效率。底线是我想找到2000个JOBID的效率,每个JOBID的公式是Job_Render/LC_Final+LC_Preview。我已将Job_Render存储在字符串baseParam中,并将两个LC的总和存储在字符串Denom中。请帮帮我

public class Efficiency {

     static final String DB_DRIVER = "com.mysql.jdbc.Driver";
     static final String DB_CONNECTION = "jdbc:mysql://localhost:3306/";
     static final String DB_USER = "root";
     static final String DB_PASSWORD = "root";
     static final String dbName = "raas";



    public static void main(String[] args)   {

        try{
            effFunc();
        }


        catch (Exception q){
            q.getMessage();
        }


    }
    static void effFunc() throws ClassNotFoundException,SQLException{

            Connection conn = null;


            // STEP 2: Register JDBC driver
            Class.forName(DB_DRIVER);

            // STEP 3: Open a connection
            System.out.println("Connecting to a selected database...");
            conn = DriverManager.getConnection(DB_CONNECTION + dbName, DB_USER,
                    DB_PASSWORD);
            System.out.println("Connected database successfully...");
            String baseParam;
            //String[] subParam ;
            baseParam= "Job_Render";

            String sql3="";
            String denom="";

            final String[] COL={ "LC_Final","LC_Preview"};
            denom = "(" + COL[0] + "+" + COL[1] + ")";
            Statement stmt = null;

            stmt = conn.createStatement();

    //  sql3 =  "select 'Efficiency' Field,avg(eff),min(eff),max(eff) from(select (Job_Render/(LC_Final+LC_Preview))as eff from ras)as s";


sql3 =  "select  avg(eff),min(eff),max(eff) from(select ("+baseParam+"/"+denom+"))as eff from ras)as s";


            System.out.println(sql3);
//          
            try{
            ResultSet res = stmt.executeQuery(sql3);

            //System.out.println(res);


    while(res.next()){

//      String JobID = res.getString("JobID");
//      System.out.println("Job ID : " + JobID);
        String col1 = res.getString(1);
        System.out.println(col1);
        double avg = res.getDouble(2);
        System.out.println("Average of eff is:"+avg);
        double min = res.getDouble(3);
        System.out.println("Min of eff is:"+min);
        double max = res.getDouble(4);
        System.out.println("Max of eff is:"+max);


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



}}
代码运行的查询sql1是空字符串

String sql1="";
// sql1 = "select * from raas.jobs";
ResultSet res = stmt.executeQuery(sql1); // sql1 = ""
应该是

ResultSet res = stmt.executeQuery(sql3);
编辑

然后获取值

String col1 = res.getString(1);
double avg = res.getDouble(2);
double min = res.getDouble(3);
double max = res.getDouble(4);

当你在数据库中运行select时,会得到不同的结果吗?@Elliot Frisch是的,当我通过mysql工作台运行相同的查询时,它运行得非常好。它不适用于JDBC发布您的JDBC代码。我用代码更改了正文。这是我得到的com.mysql.JDBC输出。ResultSet@27bc2616,而不是eff的值,我尝试了这个方法,但仍然没有得到从mysql获得的输出jdbcworkbench@DhruvSheth编辑。ResultSet.toString不会获取数据,也不会覆盖Object.toString.i要运行以下查询sql3=select+baseParam+/+denom+as eff from rasas s中的select avgeff、mineff、maxeff;这是对前一个查询的小修改,但我得到了语法error@ElliotFrisch我添加了一个修改后的查询,因为我想查找表中每个作业渲染的效率,而不是所有作业渲染的整体效率,因为表中有2000多个作业渲染。我不知道该怎么办do@Dhruv发布另一个问题。你想得到2000行吗?