如何通过Java获取MySQL表中一列的不同值的ID?

时间:2018-06-19 07:24:55

标签: java mysql

我在MySQL表中有一个“time”列,它被声明为String列。时间值如下:' 2017-07-02 00:00:05'我创建了一个Jframe,JcomboBoxes可以选择时间:

Array.forEach()

我将这些字符串提供给使用Select语句的java代码:

    public static String StartTime;
       public static String EndTime;
        public TimeChooser() {
        initComponents();
        Statement st = null;
         String query = "SELECT time FROM ceiloTable";
          try{
            Connection con = getConnection();
            st = con.createStatement();
            ResultSet rs = st.executeQuery(query);
            while(rs.next()){
            jComboBox1.addItem(rs.getString("time"));
            jComboBox2.addItem(rs.getString("time"));
            }
          }catch(Exception e){}

       private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        StartTime = jComboBox1.getSelectedItem().toString();}
     private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        EndTime = jComboBox2.getSelectedItem().toString();}

当我在select语句中使用这些字符串时:

NewJFrame_DB jframe = new NewJFrame_DB();
        jframe.STime = StartTime;
        jframe.ETime = EndTime;

运行代码后出现以下错误:

PreparedStatement statement= con.prepareStatement("SELECT * FROM ceiloTable WHERE time BETWEEN " + STime + " AND " + ETime);

似乎我不能使用这些字符串,因为它们包含空格和冒号。由于这个问题,我想使用ID作为StartTime和EndTime的主键,但我不知道如何获取他们的ID?有人能让我知道如何获得StartTime和EndTime的ID吗?感谢您提前回复!

1 个答案:

答案 0 :(得分:0)

如果数据库中的time字段为string(varchar)而非datetime,那么使用BETWEEN子句会进行字典比对,而不是按时间顺序排列,可能会导致结果不准确或不正确,具体取决于您{ {1}}格式。建议使用STR_TO_DATE功能:

datetime