博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC连接MYSQL数据库/executeQuery(String sql),execute...
阅读量:6615 次
发布时间:2019-06-25

本文共 4460 字,大约阅读时间需要 14 分钟。

hot3.png

 1. ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 象。

 2.int executeUpdate(String sql); 可执行增,删,改返回执行受到影响的行数
 3. boolean execute(String sql); 
可执行任何SQL语句,返回一个布尔值,表示是否返回   ResultSet 

//用JDBC,各种数据库连接方式是相同的,只是不同的数据库的连接URL不同==================

<%

  
 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 + "' οnclick='return confirm(\"确定删除该记录?\")'>删除</a>");
                        out.println("        <a href='operatePerson.jsp?action=edit&id="
                        + id + "'>修改</a>");
                        out.println("    </td>");
                        out.println("        </tr>");
                    }

                %>

//下面看看int executeUpdate(String sql)有什么区别吧=======================

        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();
        }

//=下面说PreparedStatement===========================================

/*PreparedStatement是Statement的子接口(如图所示),表示预编译的 SQL 语句的对象,SQL 语句被预编译并存储在PreparedStatement对象中。然后可以使用此对象多次高效地执行该语句。*/

    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();
        }
    }

转载于:https://my.oschina.net/u/1254856/blog/172183

你可能感兴趣的文章
Centos7没有安装ifconfig命令的解决方法
查看>>
我的友情链接
查看>>
linux命令备忘 ulimit 常见服务的启动
查看>>
浅谈参数innodb_undo_tablespaces
查看>>
PHP加载MSSQL失败的解决办法
查看>>
MySQL系列之B-2------MySQL安装
查看>>
普通用户启动redis
查看>>
Memcached实现Session共享
查看>>
1.4-shell自定义变量
查看>>
ansible模块使用
查看>>
grep之正则表达式用法
查看>>
Oracle查询所有序列
查看>>
OGG运维优化脚本(十三)-信息同步类--进程信息上传
查看>>
详解Linux下挂载和格式化虚拟磁盘
查看>>
用永中Office过把DJ瘾
查看>>
SSL/TLS协议簇加解密流程
查看>>
我的友情链接
查看>>
matlab中使用结构体(1)
查看>>
在Redhat 5 上手动创建DNS服务器
查看>>
Linux内核管理--内存(一)
查看>>