20155320 十六周课堂实践
关于数据库的相关课堂实践1,由于课上我没有成功连上数据库。课下全部重新安装了一遍数据库,终于连接上了数据库。

查询world数据库,获得人口超过500万的所有城市的列表。
起初用的是原始的messagedao代码,但是message都是红的,后来导入message的代码,修改增加人口等要素及函数,完善后的MessageDAO如下
import java.sql.*;
import java.util.*;
public class MessageDAO {
    private String url;
    private String user;
    private String passwd;
    public MessageDAO(String url, String user, String passwd) {
        this.url = url;
        this.user = user;
        this.passwd = passwd;
    }
    public void add(Message message) {
        try(Connection conn = DriverManager.getConnection(url, user, passwd);
            Statement statement = conn.createStatement()) {
            String sql = String.format(
                    "INSERT INTO city( Name, Population) VALUES ('%s', '%d')",
                    message.getName(),message.getPopulation());
            statement.executeUpdate(sql);
        } catch(SQLException ex) {
            throw new RuntimeException(ex);
        }
    }
    public List<Message> get() {
        List<Message> messages = new ArrayList<>();
        try(Connection conn = DriverManager.getConnection(url, user, passwd);
            Statement statement = conn.createStatement()) {
            ResultSet result =
                    statement.executeQuery(
                            "SELECT DISTINCT city.Name,city.Population\n" +
                                    "FROM  city INNER JOIN\n" +
                                    "        country ON country.Capital = city.ID\n" +
                                    "WHERE  country.Continent = \"Asia\"");
            while (result.next()) {
                Message message = toCity(result);
                messages.add(message);
            }
        } catch(SQLException ex) {
            throw new RuntimeException(ex);
        }
        return messages;
    }
    private Message toCity(ResultSet result) throws SQLException {
        Message message = new Message();
        message.setName(result.getString(1));
        message.setPopulation(result.getLong(2));
        return message;
    }
}
运行结果为:

 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号