PreparedStatement setString不起作用,仍然有问号 [英] PreparedStatement setString doesn't work, there are still question marks

查看:34
本文介绍了PreparedStatement setString不起作用,仍然有问号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在处理一个后面有数据库的项目,我想使用此方法按列对文件进行排序: 因此在方法头中有4个不同的参数,第一个参数是连接,第二个参数是用户名,因为只有上传文件的人才能看到文件,下一个参数是数据库中表的列,下一个参数是ASC或DESC。

public ArrayList<Daten> meineDaten(Connection conn,String sortierparameter,String spalte,String reihung)
    {
        //generieren einer ArrayList zum Zwischenspeichern von den Werten aus der Datenbank
        ArrayList<Daten> DatenSortiertPrivate = new ArrayList<>();
        String READ_DATEN_PRIVATE = null;

        //SQL-Abfrage
        if(reihung.equals("ASC"))
        {
            READ_DATEN_PRIVATE="select uploadid,dateityp, dateiname, autor, uploaddatum, dokumentdatum, status from uploaddaten where uploader= ? and zustand='true' order by ? ASC;";
        }
        else if(reihung.equals("DESC")){
            READ_DATEN_PRIVATE="select uploadid,dateityp, dateiname, autor, uploaddatum, dokumentdatum, status from uploaddaten where uploader= ? and zustand='true' order by ? DESC;";
        }

        //READ_DATEN_PRIVATE="select uploadid,dateityp, dateiname, autor, uploaddatum, dokumentdatum, status from uploaddaten where uploader=? and zustand='true' order by ? ?;";

        try {
            pstmt = conn.prepareStatement(READ_DATEN_PRIVATE);
            pstmt.setString(1, sortierparameter);
            pstmt.setString(2, spalte);
            rs = pstmt.executeQuery();
            System.out.println("SQL: "+READ_DATEN_PRIVATE);
            while(rs.next())
            {
                int uploadid = rs.getInt(1);
                String dateityp = rs.getString(2);
                String dateiname = rs.getString(3);
                String autor = rs.getString(4);
                String uploaddatum = rs.getString(5);
                String dokumentdatum = rs.getString(6);
                String status = rs.getString(7);

                Daten zeile = new Daten(uploadid,dateityp,dateiname, autor, uploaddatum, dokumentdatum, status);
                DatenSortiertPrivate.add(zeile);
            }

            pstmt.close(); pstmt=null;
            rs.close();rs=null;
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return DatenSortiertPrivate;

    }

我不知道为什么会出现这样的结果: SQL Daten auf网站angebenselect ploadaid,dateityp,dateiname,autor,ploaddatum,dokumentdatum,status from ploaddaten where ploadader=?and zustand=‘true’ORDER BY?asc;

例如按"dateiname"排序,用户名为thoker和asc。

此方法将通过单击按钮使用。

附注:对不起,我的英语不好

推荐答案

您正在打印READ_DATEN_PRIVATE。在prepareStatement之后打印pstmt,然后可以检查更新的查询

 System.out.println("SQL Daten auf Website angeben Before"+READ_DATEN_PRIVATE);
        try {
            pstmt = conn.prepareStatement(READ_DATEN_PRIVATE);
            pstmt.setString(1, sortierparameter);
            pstmt.setString(2, spalte);
            rs = pstmt.executeQuery();
            System.out.println("After Change:" + pstmt);

这篇关于PreparedStatement setString不起作用,仍然有问号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆