关于jdbc的问题,如何解决?

1、有数据库表a,表a中有id为主键,b是其中一个元素,如何列出表a中所有b元素为c的列,麻烦请写一下SQL语句,如果可以的话,写一下Java代码吧谢谢了。b,c必须是java函数中的变量
2、有数据库表a,表a中有id为主键,b是其中一个int型的元素,我现在可以按照表a一行一行添加进arraylist,但是如何按照b进行排列并添加进arraylist,b必须是变量
我是在写java swing ,得到的list要写入jtable的,麻烦牛人给解决下吧

基于Monster 组和GPT的调写:
有问题,回复,在线答疑!
列出表a中所有b元素为c的列的SQL语句:

SELECT * FROM a WHERE b = ?


其中?是占位符,可以用PreparedStatement来设置值。

Java代码示例:

String sql = "SELECT * FROM a WHERE b = ?";
try (Connection conn = DriverManager.getConnection(url, username, password);
     PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setString(1, c);  // 将变量c设置为占位符的值
    try (ResultSet rs = stmt.executeQuery()) {
        while (rs.next()) {
            // 获取每一行数据的具体值
            int id = rs.getInt("id");
            String b = rs.getString("b");
            // 其他字段...
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}


2.按照b进行排列并添加进arraylist的Java代码示例:

String sql = "SELECT * FROM a ORDER BY b";
List<Integer> list = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(url, username, password);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery(sql)) {
    while (rs.next()) {
        int id = rs.getInt("id");
        int b = rs.getInt("b");
        // 其他字段...
        list.add(b);
    }
} catch (SQLException e) {
    e.printStackTrace();
}


以上代码示例中的变量b和c都是自己定义的Java变量,可以根据需要进行修改。同时,需要将url、username、password等参数替换为具体的数据库连接信息。

大概这样写,望采纳
QL语句:SELECT * FROM tableA WHERE b = c;

ArrayList<Object> list = new ArrayList<Object>();
String sql = "SELECT * FROM tableA WHERE b = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, c);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
    list.add(rs.getObject("b"));
}
rs.close();
pstmt.close();
// 按照b进行排序
Collections.sort(list, new Comparator<Object>() {
    @Override
    public int compare(Object o1, Object o2) {
        return o1.compareTo(o2);
    }
});
// 将list写入jtable
DefaultTableModel model = (DefaultTableModel) jTable.getModel();
for (Object o : list) {
    model.addRow(new Object[] { o });
}

该回答引用GPTᴼᴾᴱᴺᴬᴵ
1、列出表a中所有b元素为c的列的SQL语句为:

SELECT * FROM a WHERE b = ?

其中,?为占位符,需要在Java代码中设置参数值。

Java代码示例:

String sql = "SELECT * FROM a WHERE b = ?";
try (Connection conn = DriverManager.getConnection(url, username, password);
     PreparedStatement pstmt = conn.prepareStatement(sql)) {
    pstmt.setInt(1, c); // 设置参数值为变量c
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()) {
        // 获取每一行的数据,可以将其存储到Java对象中或输出到控制台
        int id = rs.getInt("id");
        int b = rs.getInt("b");
        // ...
    }
} catch (SQLException e) {
    e.printStackTrace();
}

2、按照b进行排列并添加进ArrayList的Java代码示例:

String sql = "SELECT * FROM a ORDER BY b";
try (Connection conn = DriverManager.getConnection(url, username, password);
     Statement stmt = conn.createStatement()) {
    ResultSet rs = stmt.executeQuery(sql);
    List<SomeObject> list = new ArrayList<>();
    while (rs.next()) {
        // 将每一行的数据存储到Java对象中,然后添加到ArrayList中
        int id = rs.getInt("id");
        int b = rs.getInt("b");
        SomeObject obj = new SomeObject(id, b, ...); // 根据具体情况定义SomeObject类
        list.add(obj);
    }
    // 将ArrayList中的数据显示在JTable中
    MyTableModel model = new MyTableModel(list); // 自定义TableModel,根据SomeObject类的属性定义表格列名和数据
    JTable table = new JTable(model);
    // ...
} catch (SQLException e) {
    e.printStackTrace();
}

该回答内容部分引用GPT,GPT_Pro更好的解决问题
SQL语句:SELECT * FROM a WHERE b = c;

Java代码:

// 创建ArrayList
ArrayList<String> list = new ArrayList<>();
// 执行SQL查询语句
String sql = "SELECT * FROM a WHERE b = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1,c);
ResultSet rs = statement.executeQuery();
// 将查询结果添加进arraylist中
while (rs.next()){
    list.add(rs.getString("b"));
}

若要将list写入JTable,则需要借助DefaultTableModel类,可以将ArrayList中的数据转换成表格。示例代码如下:

// 创建DefaultTableModel对象,用来装载list中的数据
DefaultTableModel model = new DefaultTableModel();
// 设置表头信息,一般是list中的key值
String[] tableHeader = { "id", "b" };
model.setColumnIdentifiers(tableHeader);   // 设置表头信息 
// 将ArrayList中的数据添加到model中,一行一行的添加 
for (int i = 0; i < list.size(); i++) { 
    String rowData[] = list.get(i).split(",");   // 根据list中存储的数据格式进行分割 
    model.addRow(rowData);  // 添加一行记录 
} 
// 把model作为参数传递给JTable 
JTable table = new JTable(model);  // 创建JTable对象 

如果回答有帮助,望采纳。