jdbc:Java Database Connectivity
首先要添加数据库驱动jar包,然后在connect.jsp页面中加载数据库驱动并创建数据库连接。
注册数据库驱动(记住)
Class.forName("com.mysql.jdbc.Driver"); //(MySQL 5)Class.forName("com.mysql.cj.jdbc.Driver"); //(MySQL 6以上)String url = "jdbc:mysql://localhost:3306/test";String name = "111";String pwd = "1234";//获取Connection对象Connection conn = DriverManager.getConnection(url,name,pwd);
添加记录(记住)
//注意这里前面有ed后面没有PerparedStatement ps = conn.gerPrepareStatement("insert into Student(Sname,Sno,Sage) values (?,?,?)");ps.setString(1,"lry");ps.setInt(2,123);ps.setInt(3,21);ps.close();conn.close();
查询记录(记住)
Statement stmt = conn.createStatement();String sql = "select * from Student";ResultSet rs = stmt.executeQuery(sql); //注意这里是executeQuerywhile(rs.next()){String name = rs.getString("Sname");String age = rs.getInt("Sage");String Sno = rs.getInt("Sno");}rs.close();stmt.close();conn.close();
实例:
<%
try {
// 加载数据库驱动,注册到驱动管理器
Class.forName("com.mysql.cj.jdbc.Driver");
// 数据库连接字符串
String url = "jdbc:mysql://localhost:3306/test";
// 数据库用户名
String username = "root";
// 数据库密码
String password = "miankuku";
// 创建Connection连接
Connection conn = DriverManager.getConnection(url,username,password);
// 判断 数据库连接是否为空
if(conn != null){
// 输出连接信息
out.println("数据库连接成功!");
// 关闭数据库连接
conn.close();
}else{
// 输出连接信息
out.println("数据库连接失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
PreparedStatement
§PreparedStatement对象对SQL语句的占位符参数赋值,其参数的下标值不是0,而是1,它与数组的下标有所区别。
添加数据:
此处仅写添加操作的jsp界面,省略表单页面。
<body>
<%request.setCharacterEncoding("utf-8");%>
//通过<jsp:useBean>实例化JavaBean对象Book
<jsp:useBean id="book" class="com.Lesson10.bean.Book"></jsp:useBean>
<jsp:setProperty property="*" name="book"/>
<%
try {
// 加载数据库驱动,注册到驱动管理器
Class.forName("com.mysql.cj.jdbc.Driver");
// 数据库连接字符串
String url = "jdbc:mysql://localhost:3306/test";
// 数据库用户名
String username = "root";
// 数据库密码
String password = "miankuku";
// 创建Connection连接
Connection conn = DriverManager.getConnection(url,username,password);
// 添加图书信息的SQL语句
String sql = "insert into tb_books(name,price,bookCount,author) values(?,?,?,?)";
// 获取PreparedStatement
PreparedStatement ps = conn.prepareStatement(sql);
// 对SQL语句中的第1个参数赋值
ps.setString(1, book.getName());
System.out.println("name:"+book.getName());
// 对SQL语句中的第2个参数赋值
ps.setDouble(2, book.getPrice());
// 对SQL语句中的第3个参数赋值
ps.setInt(3,book.getBookCount());
// 对SQL语句中的第4个参数赋值
ps.setString(4, book.getAuthor());
// 执行更新操作,返回所影响的行数
int row = ps.executeUpdate();
// 判断是否更新成功
if(row > 0){
// 更新成输出信息
out.print("成功添加了 " + row + "条数据!");
}
// 关闭PreparedStatement,释放资源
ps.close();
// 关闭Connection,释放资源
conn.close();
} catch (Exception e) {
out.print("图书信息添加失败!");
e.printStackTrace();
}
%>
<br>
<a href="index.jsp">返回</a>
</body>
数据查询操作
servlet中:
返回查询结果->创建Book对象的List->while(resultset.next())进行Book对象的批量赋值->setAttribute将List存入request中,请求转发。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动,注册到驱动管理器
String url = "jdbc:mysql://localhost:3306/test";// 数据库连接字符串
String username = "root";// 数据库用户名
String password = "miankuku";// 数据库密码
Connection conn = DriverManager.getConnection(url,username,password);// 创建Connection
Statement stmt = conn.createStatement();// 获取Statement
String sql = "select * from tb_books";// 添加图书信息的SQL语句
ResultSet rs = stmt.executeQuery(sql);// 执行查询
List<Book> list = new ArrayList<Book>();// 实例化List对象
while(rs.next()){
Book book = new Book();// 实例化Book对象
book.setId(rs.getInt("id"));// 对id属性赋值
book.setName(rs.getString("name"));// 对name属性赋值
book.setPrice(rs.getDouble("price"));// 对price属性赋值
book.setBookCount(rs.getInt("bookCount"));// 对bookCount属性赋值
book.setAuthor(rs.getString("author"));// 对author属性赋值
list.add(book);// 将图书对象添加到集合中
}
request.setAttribute("list", list);// 将图书集合放置到request之中
rs.close(); // 关闭ResultSet
stmt.close(); // 关闭Statement
conn.close(); // 关闭Connection
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
request.getRequestDispatcher("/10/bookList.jsp").forward(request, response); // 请求转发到book_list.jsp
}
结果显示页面中:
用jsp对传入的Attribute生成列表结果
<table align="center" width="450" border="1" height="180" bordercolor="white"
bgcolor="black" cellpadding="1" cellspacing="1">
<tr bgcolor="white">
<td align="center" colspan="5">
<h2>所有图书信息</h2>
</td>
</tr>
<tr align="center" bgcolor="#e1ffc1" >
<td><b>ID</b></td>
<td><b>图书名称</b></td>
<td><b>价格</b></td>
<td><b>数量</b></td>
<td><b>作者</b></td>
</tr>
<%
// 获取图书信息集合
List<Book> list = (List<Book>)request.getAttribute("list");
// 判断集合是否有效
if(list == null || list.size() < 1){
out.print("没有数据!");
}else{
// 遍历图书集合中的数据
for(Book book : list){
%>
<tr align="center" bgcolor="white">
<td><%=book.getId()%></td>
<td><%=book.getName()%></td>
<td><%=book.getPrice()%></td>
<td><%=book.getBookCount()%></td>
<td><%=book.getAuthor()%></td>
</tr>
<%
}
}
%>
</table>
