javaweb连接mysql的两种方法



一、直接连接,不封装到工具类中,主要步骤:

先导包:mysql-connector-java-5.0.8-bin.jar(点击跳转到下载界面),放在WebRoot/WEB-INF/lib/下

  1.加载驱动//com.MySQL.jdbc.Driver

  2.获取连接 Connection对象

  3.获取用于向数据库发送SQL的Statement对象
  
  4.执行sql,获取数据,解析数据
  
  5.关闭连接,释放资源

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.               /* 协议:子协议://主机:端口/数据库名 */  
  2. String url = "jdbc:mysql://localhost:3306/jdbctest";  
  3.   
  4. // mysql数据库的用户名与密码,安装时自己设置,一般默认为root  
  5. String user = "root";  
  6. String password = "root";  
  7.   
  8. Connection connection = null;  
  9. Statement statement = null;  
  10. ResultSet resultSet = null;  
  11. try {  
  12.     // 1.加载驱动//com.mysql.jdbc.Driver  
  13.     /* 
  14.      * DriverManager.registerDriver(new 
  15.      * Driver());用这种方法会加载两次驱动,也就是说会创建两个drive对象 
  16.      */  
  17.     Class.forName("com.mysql.jdbc.Driver");  
  18.     // 2.获取连接  
  19.     connection = DriverManager.getConnection(url, user, password);  
  20.   
  21.     // 3.获取用于向数据库发送SQL的Statement对象  
  22.     statement = connection.createStatement();  
  23.   
  24.     // 4.执行sql,获取数据  
  25.     resultSet = statement.executeQuery("SELECT * FROM users;");  
  26.   
  27.     // 解析数据  
  28.     while (resultSet.next()) {  
  29.         int id = resultSet.getInt("id");  
  30.         String name = resultSet.getString("name");  
  31.         String psd = resultSet.getString("password");  
  32.         String email = resultSet.getString("email");  
  33.         String birthday = resultSet.getString("birthday");  
  34.   
  35.         System.out.println(id + " " + name + " " + psd + " " + email  
  36.                 + " " + birthday);  
  37.     }  
  38. catch (ClassNotFoundException e) {  
  39.     e.printStackTrace();  
  40. catch (SQLException e) {  
  41.     e.printStackTrace();  
  42. finally {    
  43.   
  44.                       //5.关闭连接,释放资源  
  45.     if (resultSet != null) {  
  46.         try {  
  47.             resultSet.close();  
  48.         } catch (SQLException e) {  
  49.             // TODO Auto-generated catch block  
  50.             e.printStackTrace();  
  51.         }  
  52.         resultSet = null;  
  53.     }  
  54.   
  55.     if (statement != null) {  
  56.         try {  
  57.             statement.close();  
  58.         } catch (SQLException e) {  
  59.             // TODO Auto-generated catch block  
  60.             e.printStackTrace();  
  61.         }  
  62.         statement = null;  
  63.     }  
  64.   
  65.     if (connection != null) {  
  66.         try {  
  67.             connection.close();  
  68.         } catch (SQLException e) {  
  69.             // TODO Auto-generated catch block  
  70.             e.printStackTrace();  
  71.         }  
  72.         connection = null;  
  73.     }  

  1. }  

二、使用连接池连接
 ·在tomcat的config目录下,编辑context.xml,添加
<Resource name="jdbc/mysqlds"
		auth="Container"
		type="javax.sql.DataSource"
		maxActive="100"
		maxIdle="30"
		maxWait="10000"
		username="root"
		password=""
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost/数据库名?useUnicode=true&characterEncoding=utf-8"	/>

·在项目中创建一个类,我的类名是DbHelper.java

package com.tyut;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;

public class DbHelper {
	public static QueryRunner getQueryRunner() {
		DataSource ds = null;
		try {
			// 获取数据源对象
			Context context = new InitialContext();
			ds = (DataSource) context.lookup("java:/comp/env/jdbc/mysqlds");
		} catch (Exception e) {
			e.printStackTrace();
		}
		QueryRunner qr = new QueryRunner(ds);
		return qr;
	}
}
·在servlet中调用类方法

QueryRunner qr = DbHelper.getQueryRunner();

qr.query(sql,new BeanListHandler(封装类.class)); //查询sql并封装类

qr.update(sql); //更新sql

  • 12
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web中实现MySQL分页功能,可以按照以下步骤进行: 1. 获取总记录数:使用SQL语句查询数据表中的总记录数,例如: ```sql SELECT COUNT(*) FROM table_name; ``` 2. 计算总页数:根据每页显示的记录数和总记录数计算出总页数,例如: ```java int pageSize = 10; // 每页显示的记录数 int totalCount = 100; // 总记录数 int totalPages = (totalCount + pageSize - 1) / pageSize; // 计算总页数 ``` 3. 查询当前页的数据:使用LIMIT关键字限制查询结果的范围,例如: ```sql SELECT * FROM table_name LIMIT start, pageSize; ``` 其中,start表示查询结果的起始位置,可以根据当前页码和每页显示的记录数计算得出: ```java int currentPage = 1; // 当前页码 int start = (currentPage - 1) * pageSize; // 计算查询结果的起始位置 ``` 4. 将查询结果封装成List对象并返回给前端。 完整的MySQL分页功能实现代码如下所示: ```java public List<User> findByPage(int currentPage, int pageSize) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; List<User> userList = new ArrayList<>(); try { // 获取数据库连接 conn = JdbcUtils.getConnection(); // 获取总记录数 String countSql = "SELECT COUNT(*) FROM user"; pstmt = conn.prepareStatement(countSql); rs = pstmt.executeQuery(); int totalCount = 0; if (rs.next()) { totalCount = rs.getInt(1); } // 计算总页数 int totalPages = (totalCount + pageSize - 1) / pageSize; // 查询当前页的数据 String dataSql = "SELECT * FROM user LIMIT ?, ?"; pstmt = conn.prepareStatement(dataSql); pstmt.setInt(1, (currentPage - 1) * pageSize); pstmt.setInt(2, pageSize); rs = pstmt.executeQuery(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtils.close(conn, pstmt, rs); } return userList; } ``` 在实际应用中,可以将上述代码封装成一个通用的分页工具类,方便其他模块的调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值