JDBC鏈接MYSQL數據庫/executeQuery(String sql),execute...

 1. ResultSet executeQuery(String sql); 執行SQL查詢,並返回ResultSet 象。
 2.int executeUpdate(String sql); 
可執行增,刪,改返回執行受到影響的行數
 3. boolean execute(String sql); 
可執行任何SQL語句,返回一個布爾值,表示是否返回   ResultSet  html

//用JDBC,各類數據庫鏈接方式是相同的,只是不一樣的數據庫的鏈接URL不一樣================== mysql

<% sql

    Connection conn = null;
    Statement stmt = null;
    ResultSet result = null;
    
    try{
        // 註冊 MySQL 驅動. 也能夠使用下面兩種方式的任一種
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //new com.mysql.jdbc.Driver();
        //Class.forName("com.mysql.jdbc.Driver").newInstance();
        
        // 獲取數據庫鏈接。 三個參數分別爲 鏈接URL用戶名密碼
        conn = DriverManager.getConnection(
                            "jdbc:mysql://localhost:3306/databaseWeb",
                            "root",
                            "admin");
        
        // 獲取 Statement。 Statement 對象用於執行 SQL。至關於控制檯。
        stmt = conn.createStatement();
        
        // 使用 Statement 執行 SELECT 語句。返回結果集。
        result = stmt.executeQuery("select * from tb_person");    
%>
        <form action="operatePerson.jsp" method=get>
            <table bgcolor="#CCCCCC" cellspacing=1 cellpadding=5 width=100%>
                <tr bgcolor=#DDDDDD>
                    <th></th>
                    <th>
                        ID
                    </th>
                    <th>
                        姓名
                    </th>
                    <th>
                        英文名
                    </th>
                    <th>
                        性別
                    </th>
                    <th>
                        年齡
                    </th>
                    <th>
                        生日
                    </th>
                    <th>
                        備註
                    </th>
                    <th>
                        記錄建立時間
                    </th>
                    <th>
                        操做
                    </th>
                </tr>
                <%
                     // 遍歷結果集。rs.next() 返回結果集中是否還有下一條記錄。若是有,自動滾動到下一條記錄並返回 true
                    while (result .next()) { //這裏能夠看出與 int result的區別了

                        int id = rs.getInt("id"); // 整形類型
                        int age = rs.getInt("age");

                        String name = rs.getString("name"); // 字符串類型
                        String englishName = rs.getString("english_name");
                        String sex = rs.getString("sex");
                        String description = rs.getString("description");

                        Date birthday = rs.getDate("birthday"); // 日期類型,只有日期信息而沒有時間信息
                        Timestamp createTime = rs.getTimestamp("create_time"); // 時間戳類型,既有日期又有時間。

                        out.println("        <tr bgcolor=#FFFFFF>");
                        out.println("    <td><input type=checkbox name=id value=" + id
                        + "></td>");
                        out.println("    <td>" + id + "</td>");
                        out.println("    <td>" + name + "</td>");
                        out.println("    <td>" + englishName + "</td>");
                        out.println("    <td>" + sex + "</td>");
                        out.println("    <td>" + age + "</td>");
                        out.println("    <td>" + birthday + "</td>");
                        out.println("    <td>" + description + "</td>");
                        out.println("    <td>" + createTime + "</td>");
                        out.println("    <td>");
                        out.println("        <a href='operatePerson.jsp?action=del&id="
                        + id + "' onclick='return confirm(\"肯定刪除該記錄?\")'>刪除</a>");
                        out.println("        <a href='operatePerson.jsp?action=edit&id="
                        + id + "'>修改</a>");
                        out.println("    </td>");
                        out.println("        </tr>");

                    }

                %> 數據庫

//下面看看int executeUpdate(String sql)有什麼區別吧======================= jsp

        Connection conn = null;
        Statement stmt = null;
        int result = 0;//用於記錄返回執行受到影響的行數
        
        try{
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            conn = DriverManager.getConnection(
                            "jdbc:mysql://localhost:3306/databaseWeb?characterEncoding=UTF-8",
                            "root",
                            "admit");
        
            stmt = conn.createStatement();
            
            // 使用 Statement 執行 SQL 語句,返回執行受到影響的行數
            result = stmt.executeUpdate(sql);
            
        
        }catch(SQLException e){
            out.println("執行SQL\"" + sql + "\"時發生異常:" + e.getMessage());
            return;
        }finally{
            if(stmt != null)    stmt.close();
            if(conn != null)    conn.close();
        } spa

//=下面說PreparedStatement=========================================== orm

/*PreparedStatement是Statement的子接口(如圖所示),表示預編譯的 SQL 語句的對象,SQL 語句被預編譯並存儲在PreparedStatement對象中。而後能夠使用此對象屢次高效地執行該語句。*/ htm

    String id = request.getParameter("id");
    String sql = "UPDATE tb_person SET name = ?, english_name = ?, sex = ?, age = ?,     birthday = ?, description = ? WHERE id = ? "; //7個問號表明7個字段預先要保留的值 
        
        Connection conn = null;
        PreparedStatement preStmt = null;
        
        try{
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            conn = DriverManager.getConnection(
                                "jdbc:mysql://localhost:3306/databaseWeb?characterEncoding=UTF-8",
                                "root",
                                "admin");
            
            preStmt = conn.prepareStatement(sql); //使用PreparedStatement對象來構建並執行SQL語句
            preStmt.setString(1, name);
            preStmt.setString(2, englishName);
            preStmt.setString(3, sex);
            preStmt.setInt(4, Integer.parseInt(age));
            preStmt.setDate(5, new Date(new SimpleDateFormat("yyyy-MM-dd").parse(birthday).getTime()));
            preStmt.setString(6, description);
            preStmt.setInt(7, Integer.parseInt(id));
            
            // 使用 preStmt 執行 SQL 語句
            int result = preStmt.executeUpdate(sql);
    
            out.println("<html><style>body{font-size:12px; line-height:25px; }</style><body>");
            
            if(result == 0)        out.println("影響數目爲 0, 修改失敗. ");
            else    out.println(result + " 條記錄被修改。");
            
            out.println("<a href='listPerson.jsp'>返回人員列表</a>");
            
            // 將執行的 SQL 語句輸出到客戶端
            out.println("<br/><br/>執行的 SQL 語句爲:<br/>" + sql);
            
        }catch(SQLException e){
            out.println("執行SQL\"" + sql + "\"時發生異常:" + e.getMessage());
            e.printStackTrace();
        }finally{
            if(preStmt != null)    preStmt.close();
            if(conn != null)    conn.close();
        }
    } 對象

相關文章
相關標籤/搜索