在选择查询中使用JTextField作为用户输入数据库表名

时间:2016-07-05 05:15:48

标签: java

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String sql =" select * from  '"+name+"' ";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        table.setModel(DbUtils.resultSetToTableModel(rs));
    }
    catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
    finally {
        try {
            rs.close();
            pst.close();
        }
        catch(Exception e) {
        }
    }
}

我在string sql="select * from '"+name+"'"名称文本字段中使用用户输入但是它给出了错误。但是,当我输入表名时,它显示但不是通过名称文本字段获取表名。

2 个答案:

答案 0 :(得分:0)

就像这样将输入字段的值赋给name string。   jTextField1表示保存名称的文本字段。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
try {
    String name= jTextField1.getText();
    String sql =" select * from  '"+name+"' ";
    pst = conn.prepareStatement(sql);
    rs = pst.executeQuery();
    table.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e) {
    JOptionPane.showMessageDialog(null, e);
}
finally {
    try {
        rs.close();
        pst.close();
    }
    catch(Exception e) {
    }
}
}    

答案 1 :(得分:0)

在选择语句中,'" +名称+"' used是获取jTextField值的字符串。因此,使用以下SQL语句从textfield值中获取表。

String s1 = jTextField1.getText();
    try
  {
      Class.forName("org.apache.hive.jdbc.HiveDriver");
      Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default","arunachalam", "");
      Statement st = con.createStatement();

      String sql = "select * from " + s1;                
       int rs = st.executeUpdate(sql);

      showMessageDialog(null,"Query Executed");

   }
  catch(Exception e)
  {
      showMessageDialog(null,e);
  }

在之后留一个空格然后再做声明。指定您用于文本字段的变量名称,这将起作用。 使用您在代码中使用的替代类驱动程序和连接语句。