java JDBC自我總結

preparedstatement和statement的區別

當不須要預編譯時(不須要佔位符)能夠選用statement,存在不安全sql

當有佔位符(?)時,須要選用preparedstatement安全

select 查詢語句,選用executeQuery()方法spa

執行後返回表明查詢結果的ResultSet對象code

ResultSet rs =pst.executeQuery("select * from teacher");  對象

while (rs.next()){  blog

            System.out.println(rs.getInt(1) + "/t" +    rs.getString(2));   get

string

 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。選用executeUpdate()方法io

executeUpdate 的返回值是一個整數(int),指示受影響的行數(即更新計數)。
對於 CREATE TABLE 或 DROP TABLE 等不操做行的語句,executeUpdate 的返回值總爲零
編譯

insert實例

private static int insert(Student student) {
    Connection conn = getConn();
    int i = 0;
    String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement) conn.prepareStatement(sql);
        pstmt.setString(1, student.getName());
        pstmt.setString(2, student.getSex());
        pstmt.setString(3, student.getAge());
        i = pstmt.executeUpdate();
        pstmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return i;
}

查詢樣例

private static Integer getAll() {
    Connection conn = getConn();
    String sql = "select * from students";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement)conn.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        int col = rs.getMetaData().getColumnCount();
        System.out.println("============================");
        while (rs.next()) {
            for (int i = 1; i <= col; i++) {
                System.out.print(rs.getString(i) + "\t");
                if ((i == 2) && (rs.getString(i).length() < 8)) {
                    System.out.print("\t");
                }
             }
            System.out.println("");
        }
            System.out.println("============================");
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}
相關文章
相關標籤/搜索