在Web开发由不可潍合出西体田数护库来存储和管理数据。
据库访问的支持,SUN公司于1996年提供了一套访问数据库的标准java类库
JDBC 的全称是java数据库连接( java Database Connectivity)它是一套用于执行SQL语句的javaAPL。应用程序可以通过这套APL连接到关系数据库并使用SQL 语句来完成数据库中数据的查询、更新、新增和删除的 *** 作。
据的方式是不同的。
不同种类的数据库(加 MSol racle等)在其内部处理数使用数据库厂商提供的访问接口 *** 作数据库,应用程序的可移植性就会变侵很左。例如,用户当前在程序中使用的是 MySQL提供的接口 *** 作数据应用程序库,如果换成Oracle数据库,则需要重新使用Oracle。
Driver 接口
Driver接口是所有JDBC 驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC 程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动 JAR包)。
DriverM.anager 类于加载JDBC 驱动并且创建与数据库的连接。在DriverManager 类中,DriverManager类用定义了两个比较重要的静
态方法。
Statement 接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象,该接口的对象通过Connection实例的createStatement()方法获得。利用该对象把静态的SQL语句发送到数据库编译执行,然后返回数据库的处理结果。在Statement接口中,提供了3个常用的执行SQL语句的方法
PreparedStatement 接口
Statement接口封装了JDBC执行SQL语句的方法,可以完成Java程序执行SQL语句的 *** 作。然而,在实际开发过程中往往需要将程序中的变量作为SQL语句的查询条件,而使用Statement接口 *** 作这些SQL语句会过于繁琐,并且存在安全方面的问题。针对这-问题,JDBCAPI提供了扩展的
PreparedStatement接口。
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行 *** 作,应用该接口中的SQL语句可以使用占位符“?”来代替其参数,用方通过sex0方法为soL语句的参数赋值。Paeaiediatement接口中提供了一些常方法。
ResultSet 接口
ResutSset 接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一一个指向表格数据行的游标 (或指针), ResultSet 对象初始化时,游标在表格的第1行之前,调用nex(方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用nex()方法作为WHILE循环的条件来迭代ResultSet结果集。
编写JDBC程序代码如下:
package cn.itcast.jdbc.example; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Example01 { public static void main(String[] args) { Statement stmt = null; ResultSet rs = null; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3122/jdbc"; String username = "root"; String password = "itcast"; conn = DriverManager.getConnection(url,username,password); stmt = conn.createStatement(); String sql = "select * from users"; rs = stmt.executeQuery(sql); System.out.println("id | naem | password | email | birthday"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String psw = rs.getString("password"); String email = rs.getString("email"); Date birthday = rs.getDate("birthday"); System.out.println(id + " | " + name + " | " + psw + " | " +email + " | " + birthday); } }catch (ClassNotFoundException e) { e.printStackTrace(); }finally { if(rs!=null) { try { rs.close(); }catch (SQLException e) { e.printStackTrace(); } rs = null; } if(stmt!=null) { try { stmt.close(); }catch(SQLException e) { e.printStackTrace(); } stmt = null; } if(conn!=null) { try { conn.close(); }catch (SQLException e) { e.printStackTrace(); } conn = null; } } } }
package cn.itcast.jdbc.example; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement ; import java.sql.SQLException; public class Example02 { public static void main(String[] args) throws SQLException { Connection conn = null; PreparedStatement preStmt = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "itcast"; // 创建应用程序与数据库连接的Connection对象 conn = DriverManager.getConnection(url, username, password); // 执行的SQL语句 String sql = "INSERT INTO users(name,password,email,birthday)" + "VALUES(?,?,?,?)"; // 创建执行SQL语句的PreparedStatement 对象 preStmt = conn.prepareStatement(sql); preStmt.setString(1, "zl"); preStmt.setString(2, "123456"); preStmt.setString(3, "zl@sina.com"); preStmt.setString(4, "1789-12-23"); preStmt.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { // 释放资源 if (preStmt != null) { try { preStmt.close(); } catch (SQLException e) { e.printStackTrace(); } preStmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } }
package cn.itcast.jdbc.example; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Example03 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "itcast"; //1.获取Connection对象 conn = DriverManager.getConnection(url, username, password); String sql = "select * from users"; //2.创建Statement对象并设置常量 Statement st =conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); //3.执行SQL并将获取的数据信息存放在ResultSet中 ResultSet rs = st.executeQuery(sql); //4.取出ResultSet中指定数据的信息 System.out.print("第2条数据的name值为:"); rs.absolute(2); //将指针定位到结果集中第2行数据 System.out.println(rs.getString("name")); System.out.print("第1条数据的name值为:"); rs.beforeFirst(); //将指针定位到结果集中第1行数据之前 rs.next(); //将指针向后滚动 System.out.println(rs.getString("name")); System.out.print("第4条数据的name值为:"); rs.afterLast(); //将指针定位到结果集中最后一条数据之后 rs.previous(); //将指针向前滚动 System.out.println(rs.getString("name")); } catch (Exception e) { e.printStackTrace(); } finally { // 释放资源 if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } }
package cn.itcast.jdbc.example; import java.util.ArrayList; import cn.itcast.jdbc.example.dao.UsersDao; import cn.itcast.jdbc.example.domain.User; public class FindAllUsersTest{ public static void main(String[] args) { //创建一个名称为usersDao的对象 UsersDao usersDao = new UsersDao(); //将UsersDao对象的findAll()方法执行后的结果放入list集合 ArrayListlist = usersDao.findAll(); //循环输出集合中的数据 for (int i = 0; i < list.size(); i++) { System.out.println("第" + (i + 1) + "条数据的username值为:" + list.get(i).getUsername()); } } }
package cn.itcast.jdbc.example.domain; import java.util.Date; public class User { private int id; private String username; private String password; private String email; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
package cn.itcast.jdbc.example.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { // 加载驱动,并建立数据库连接 public static Connection getConnection() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "itcast"; Connection conn = DriverManager.getConnection(url, username, password); return conn; } // 关闭数据库连接,释放资源 public static void release(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static void release(ResultSet rs, Statement stmt, Connection conn){ if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } release(stmt, conn); } }
package cn.itcast.jdbc.example.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.ArrayList; import cn.itcast.jdbc.example.domain.User; import cn.itcast.jdbc.example.utils.JDBCUtils; public class UsersDao { // 添加用户的 *** 作 public boolean insert(User user) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 获得Statement对象 stmt = conn.createStatement(); // 发送SQL语句 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String birthday = sdf.format(user.getBirthday()); String sql = "INSERT INTO users(id,name,password,email,birthday) "+ "VALUES(" + user.getId() + ",'" + user.getUsername() + "','" + user.getPassword() + "','" + user.getEmail() + "','" + birthday + "')"; int num = stmt.executeUpdate(sql); if (num > 0) { return true; } return false; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return false; } // 查询所有的User对象 public ArrayListfindAll() { Connection conn = null; Statement stmt = null; ResultSet rs = null; ArrayList list = new ArrayList (); try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 获得Statement对象 stmt = conn.createStatement(); // 发送SQL语句 String sql = "SELECT * FROM users"; rs = stmt.executeQuery(sql); // 处理结果集 while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("name")); user.setPassword(rs.getString("password")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getDate("birthday")); list.add(user); } return list; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return null; } // 根据id查找指定的user public User find(int id) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 获得Statement对象 stmt = conn.createStatement(); // 发送SQL语句 String sql = "SELECt * FROM users WHERe id=" + id; rs = stmt.executeQuery(sql); // 处理结果集 while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("name")); user.setPassword(rs.getString("password")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getDate("birthday")); return user; } return null; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return null; } // 删除用户 public boolean delete(int id) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 获得Statement对象 stmt = conn.createStatement(); // 发送SQL语句 String sql = "DELETE FROM users WHERe id=" + id; int num = stmt.executeUpdate(sql); if (num > 0) { return true; } return false; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return false; } // 修改用户 public boolean update(User user) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 获得Statement对象 stmt = conn.createStatement(); // 发送SQL语句 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String birthday = sdf.format(user.getBirthday()); String sql = "UPDATE users set name='" + user.getUsername() + "',password='" + user.getPassword() + "',email='" + user.getEmail() + "',birthday='" + birthday + "' WHERe id=" + user.getId(); int num = stmt.executeUpdate(sql); if (num > 0) { return true; } return false; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return false; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)