JavaWeb学习总结-10 JDBC的CRUD
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaWeb学习总结-10 JDBC的CRUD,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7881字,纯文字阅读大概需要12分钟。
内容图文
![JavaWeb学习总结-10 JDBC的CRUD](/upload/InfoBanner/zyjiaocheng/470/96499f2e6bb24380b0360d0771764223.jpg)
把链接数据库的操作封装成一个公共函数:
// 取得一个Connction private Connection getConnection() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, "root", "123456");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
2 Statement对象
Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。
Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。
2.1、Create(插入操作)
使用executeUpdate(String sql)方法完成数据添加操作,示例操作:
public void testInsert() { // Random random = new Random(); // String id = random.nextInt(100000) + ""; String id = "100"; String name = "wangwu"; String password ="123"; String email = "aaa@163.com"; String birthday = "2016-09-03"; StringBuilder tmp = new StringBuilder(); tmp.append("insert into users(id,name,password,email,birthday)"); tmp.append("values("); tmp.append("‘" + id + "‘ , "); tmp.append("‘" + name + "‘ , "); tmp.append("‘" + password + "‘ , "); tmp.append("‘" + email + "‘ , "); tmp.append("‘" + birthday + "‘ "); tmp.append(")"); String sql = tmp.toString(); System.out.println(sql); Connection conn = getConnection(); Statement st = null; try { st = conn.createStatement(); int num = st.executeUpdate(sql); if (num > 0) { System.out.println("插入成功!!!"); } } catch (SQLException e) { e.printStackTrace(); } finally { if (null != st) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
2.2、Update(修改操作)
使用executeUpdate(String sql)方法完成数据修改操作,示例操作:
public void testUpdate() { Connection conn = getConnection(); Statement st = null; try { st = conn.createStatement(); String sql = "update users set name=‘lisi100‘ where id= 100"; System.out.println(sql); int num = st.executeUpdate(sql); if (num > 0) { System.out.println("修改成功!!!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (null != st) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
2.3、Delete(删除操作)
使用executeUpdate(String sql)方法完成数据删除操作,示例操作:
public void testDelete() { Connection conn = getConnection(); Statement st = null; try { st = conn.createStatement(); String sql = "delete from users where id= 100"; System.out.println(sql); int num = st.executeUpdate(sql); if (num > 0) { System.out.println("删除成功!!!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (null != st) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
2.4 Read(读操作)
使用executeQuery(String sql)方法完成数据查询操作,示例操作:
public void testRead() { Connection conn = getConnection(); Statement st = null; ResultSet rs = null; try { st = conn.createStatement(); String sql = "select * from users"; rs = st.executeQuery(sql); String name = null; while (rs.next()) { name = rs.getString("name"); System.out.println("读取到的用户名 name=" + name); } } catch (SQLException e) { e.printStackTrace(); } finally { if (null != rs) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != st) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if (null != conn) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
进一步的优化,释放资源的代码可以抽取出来:
/** * @Method: release * @Description: 释放资源, 要释放的资源包括Connection数据库连接对象,负责执行SQL命令的Statement对象, * 存储查询结果的ResultSet对象 * * @param conn * @param st * @param rs */ public static void release(Connection conn, Statement st, ResultSet rs) { if (rs != null) { try { // 关闭存储查询结果的ResultSet对象 rs.close(); } catch (Exception e) { e.printStackTrace(); } rs = null; } if (st != null) { try { // 关闭负责执行SQL命令的Statement对象 st.close(); } catch (Exception e) { e.printStackTrace(); } } if (conn != null) { try { // 关闭Connection数据库连接对象 conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
3 PreparedStatement
PreperedStatement是Statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。
使用PreparedStatement重写CRUD的操作,比较下与Statement的不同。
public void insert() { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { // 获取一个数据库连接 conn = getConnection(); // 要执行的SQL命令,SQL中的参数使用?作为占位符 String sql = "insert into users(id,name,password,email,birthday) values(?,?,?,?,?)"; // 通过conn对象获取负责执行SQL命令的prepareStatement对象 st = conn.prepareStatement(sql); // 为SQL语句中的参数赋值,注意,索引是从1开始的 st.setInt(1, 1);// id是int类型的 st.setString(2, "张三");// name是varchar(字符串类型) st.setString(3, "123");// password是varchar(字符串类型) st.setString(4, "bhsh@sina.com");// email是varchar(字符串类型) st.setDate(5, new java.sql.Date(new Date().getTime()));// birthday是date类型 // 执行插入操作,executeUpdate方法返回成功的条数 int num = st.executeUpdate(); if (num > 0) { System.out.println("插入成功!!"); } } catch (Exception e) { e.printStackTrace(); } finally { // SQL执行完成之后释放相关资源 release(conn, st, rs); } } public void delete() { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = getConnection(); String sql = "delete from users where id=?"; st = conn.prepareStatement(sql); st.setInt(1, 1); int num = st.executeUpdate(); if (num > 0) { System.out.println("删除成功!!"); } } catch (Exception e) { e.printStackTrace(); } finally { release(conn, st, rs); } } public void update() { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = getConnection(); String sql = "update users set name=?,email=? where id=?"; st = conn.prepareStatement(sql); st.setString(1, "王五"); st.setString(2, "wangwu@sina.com"); st.setInt(3, 1); int num = st.executeUpdate(); if (num > 0) { System.out.println("更新成功!!"); } } catch (Exception e) { e.printStackTrace(); } finally { release(conn, st, rs); } } public void find() { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = getConnection(); String sql = "select * from users where id=?"; st = conn.prepareStatement(sql); st.setInt(1, 1); rs = st.executeQuery(); if (rs.next()) { System.out.println(rs.getString("name")); } } catch (Exception e) { } finally { release(conn, st, rs); } }
JavaWeb学习总结-10 JDBC的CRUD
标签:
本文系统来源:http://www.cnblogs.com/wangshuo1/p/5874857.html
内容总结
以上是互联网集市为您收集整理的JavaWeb学习总结-10 JDBC的CRUD全部内容,希望文章能够帮你解决JavaWeb学习总结-10 JDBC的CRUD所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。