Java程序可以通过JDBC链接数据库,通过JDBC可以方便的访问数据库,不必为特定的数据库编写专门的程序。
需要先配置mysql-connector-java-5.0.8-bin.jar
使用JDBC连接数据库的开发流程如下:
- 注册数据库驱动 Class.forName("com.mysql.jdbc.Driver");
- 构建数据库连接的URL,Mysql的连接URL为"jdbc:mysql://localhost:3306/test"
- 获取Connection对象,该对象是JDBC封装的数据库连接对象,只有创建此对象后,才可以对数据执行相关操作。DriverManager.getConnection(url, username, password);
如下为JDBC核心API的五个接口:
例:mysql数据表格式:
增加操作的核心代码:
try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/student"; Connection con=DriverManager.getConnection(url, "root", ""); String sql="insert into tb_books(name, price, bookCount, author) values(?,?,?,?)"; PreparedStatement ps=con.prepareStatement(sql); ps.setString(1, book.getName()); ps.setDouble(2, book.getPrice()); ps.setInt(3, book.getBookCount()); ps.setString(4, book.getAuthor()); int row = ps.executeUpdate(); if(row>0){ out.print("成功添加"+row+" 行数据"); } ps.close(); con.close(); } catch(Exception e){ out.print("添加失败!"); e.printStackTrace(); }
查询操作的核心代码:
try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/student"; Connection con=DriverManager.getConnection(url, "root", ""); Statement statement=con.createStatement(); String sql="select * from tb_books"; ResultSet rs=statement.executeQuery(sql); ArrayList<Book> list=new ArrayList<Book>(); while(rs.next()){ Book book=new Book(); book.setName(rs.getString("name")); book.setPrice(rs.getDouble("price")); book.setBookCount(rs.getInt("bookCount")); book.setAuthor(rs.getString("author")); list.add(book); } request.setAttribute("list", list); rs.close(); con.close(); } catch(ClassNotFoundException e){ e.printStackTrace(); } catch(SQLException e){ e.printStackTrace(); }
修改数据的核心代码:
try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/student"; Connection con=DriverManager.getConnection(url, "root", ""); String sql="update tb_books set bookCount=? where name=?"; PreparedStatement ps=con.prepareStatement(sql); ps.setInt(1, bookCount); ps.setString(2, name); ps.executeUpdate(); ps.close();con.close(); } catch(Exception e){ e.printStackTrace(); }
对数据的其他操作类似。