德比SQL;通配符;?

德比SQL;通配符;?,sql,wildcard,Sql,Wildcard,在我准备的(复合)语句中,两个日期之间的日期跨度搜索工作正常。在同一查询的第二部分中,我查找JCombox3(汽车旅馆客房电话分机号码)中单个“分机”号码的匹配项,即:“103”。。。。这也很好用。有时,我希望在同一查询中搜索任何未定义的“Ext”编号。为此,我尝试了“*”和“%”(作为JCombox3中的选择)。。。。但不起作用。(列“Ext”为“varchar”) java.sql.Date dateStart=new java.sql.Date(jDateChooser2.getDate(

在我准备的(复合)语句中,两个日期之间的日期跨度搜索工作正常。在同一查询的第二部分中,我查找JCombox3(汽车旅馆客房电话分机号码)中单个“分机”号码的匹配项,即:“103”。。。。这也很好用。有时,我希望在同一查询中搜索任何未定义的“Ext”编号。为此,我尝试了“*”和“%”(作为JCombox3中的选择)。。。。但不起作用。(列“Ext”为“varchar”)

java.sql.Date dateStart=new java.sql.Date(jDateChooser2.getDate().getTime());//登记日期
java.sql.Date dateEnd=new java.sql.Date(jDateChooser3.getDate().getTime());//退房日期
字符串i=(字符串)jcombox3.getSelectedItem();//客房分机号码:101114220234等
系统输出打印LN(i);
PreparedStatement st=null;
试一试{

st=con.prepareStatement(“从TEST5中选择日期、Ext、长度、Trunk,其中datedatedate>=?和datedatedate这可能会导致SQL注入黑客的问题……但是对于SELECT语句,只需确保Ext=Ext。确保您没有使用字符串”Ext,但Ext是一个文本,所以它只是对照自身检查其值。不喜欢这样:(java.sql.SQLException:列位置“3”超出范围。此结果集的列数为“2”。明白了!(“选择Date、Ext、Length、Trunk FROM TEST5,其中datedatedate>=?和DateDate I remove”和Ext=?“…替换为”和Ext like?"
java.sql.Date dateStart = new java.sql.Date(jDateChooser2.getDate().getTime());// Check-In Date
            java.sql.Date dateEnd = new java.sql.Date(jDateChooser3.getDate().getTime());// Check-Out Date
            String i = (String)jComboBox3.getSelectedItem(); // Guest Room Extention Numbers  ie: 101,114,220,234 etc

            System.out.println(i);


            PreparedStatement st = null;
            try {
                st = con.prepareStatement("SELECT Date,Ext,Length,Trunk FROM TEST5 WHERE DateDate >= ? AND DateDate <= ? AND Ext=?");
            } catch (SQLException ex) {
                Logger.getLogger(MainDisplay.class.getName()).log(Level.SEVERE, null, ex);
            }
            st.setDate(1, dateStart);//set start date
            st.setDate(2, dateEnd);//set end date
            st.setString(3, i);
            ResultSet rs = st.executeQuery();
            jTable1.setModel(DbUtils.resultSetToTableModel(rs));