通过properties配置文件连接数据库

学生信息系统操作
本文介绍了一个学生信息管理系统的设计与实现,包括登录验证、学生信息增删改查等功能,并使用了数据库连接池来提高效率。

/**
 * @作者:Jcuckoo
 * @日期:2008-11-8
 * @版本:V 1.0
 */

db.properties

  1. DBDriver=sun.jdbc.odbc.JdbcOdbcDriver
  2. Connection=jdbc:odbc:login
  3. User=Jcuckoo
  4. Password=

dbPool.java

  1. import java.io.*;
  2. import java.util.*;
  3. import java.sql.*;
  4. public class dbPool{
  5.     private static dbPool instance = null;
  6.     //取得连接
  7.     public static synchronized Connection getConnection() {
  8.         if (instance == null){
  9.             instance = new dbPool();
  10.         }
  11.         return instance._getConnection();
  12.     }
  13.     private dbPool(){
  14.         super();
  15.     }
  16.     private  Connection _getConnection(){
  17.         try{
  18.             String sDBDriver  = null;
  19.             String sConnection   = null;
  20.             String sUser = null;
  21.             String sPassword = null;
  22.             Properties p = new Properties();
  23.             InputStream is = getClass().getResourceAsStream("/db.properties");
  24.             p.load(is);
  25.             sDBDriver = p.getProperty("DBDriver",sDBDriver);
  26.             sConnection = p.getProperty("Connection",sConnection);
  27.             sUser = p.getProperty("User","");
  28.             sPassword = p.getProperty("Password","");
  29.             Properties pr = new Properties();
  30.             pr.put("user",sUser);
  31.             pr.put("password",sPassword);
  32.             pr.put("characterEncoding""GB2312");
  33.             pr.put("useUnicode""TRUE");
  34.             Class.forName(sDBDriver).newInstance();
  35.             return DriverManager.getConnection(sConnection,pr);
  36.         }
  37.         catch(Exception se){
  38.             System.out.println(se);
  39.             return null;
  40.         }
  41.     }
  42.     //释放资源
  43.     public static void dbClose(Connection conn,PreparedStatement ps,ResultSet rs)
  44.     throws SQLException
  45.     {
  46.           rs.close();
  47.           ps.close();
  48.           conn.close();
  49.       }
  50.     }
StudentDAO.java

  1. public class StudentDAO {
  2.     public StudentDAO() {
  3.     }
  4.     Connection conn;
  5.     Statement st;
  6.     ResultSet rs;
  7.     public boolean checkLogin(String userName,String userPwd){
  8.         String sql="select * from student where userName='"+userName+"' and userPwd='"+userPwd+"'";
  9.         
  10.         try {
  11.             conn=dbPool.getConnection();
  12.             st=conn.createStatement();
  13.             rs=st.executeQuery(sql);
  14.             if(rs.next()){
  15.                 conn.close();
  16.                 return true;
  17.             }else{
  18.                 conn.close();
  19.                 return false;
  20.             }
  21.         } catch (SQLException e) {
  22.             try {
  23.                 conn.close();
  24.             } catch (SQLException e1) {
  25.                 e1.printStackTrace();
  26.             }
  27.             e.printStackTrace();
  28.             return false;
  29.         }
  30.     }
  31.     public boolean checkLogin(StudentForm student){
  32.         String sql="select * from student where userName='"+student.getUserName()+"' and userPwd='"+student.getUserPwd()+"'";
  33.         
  34.         try {
  35.             conn=dbPool.getConnection();
  36.             st=conn.createStatement();
  37.             rs=st.executeQuery(sql);
  38.             if(rs.next()){
  39.                 conn.close();
  40.                 return true;
  41.             }else{
  42.                 conn.close();
  43.                 return false;
  44.             }
  45.         } catch (SQLException e) {
  46.             try {
  47.                 conn.close();
  48.             } catch (SQLException e1) {
  49.                 e1.printStackTrace();
  50.             }
  51.             e.printStackTrace();
  52.             return false;
  53.         }
  54.     }
  55.     public List getAllStudent(){
  56.         String sql="select * from student ";
  57.         List students=new ArrayList();
  58.         try {
  59.             conn=dbPool.getConnection();
  60.             st=conn.createStatement();
  61.             rs=st.executeQuery(sql);
  62.             while(rs.next()){
  63.                 Student student=new Student(rs.getString("xuehao"),
  64.                         rs.getString("userName"),
  65.                         rs.getString("userPwd"),
  66.                         rs.getInt("czxt"),
  67.                         rs.getInt("wjyl"),
  68.                         rs.getInt("sjjg")
  69.                 );
  70.                 students.add(student);
  71.             }
  72.             
  73.         } catch (SQLException e) {
  74.             try {
  75.                 conn.close();
  76.             } catch (SQLException e1) {
  77.                 e1.printStackTrace();
  78.             }
  79.             e.printStackTrace();
  80.             return null;
  81.         }
  82.         return students;
  83.         
  84.     }
  85.     
  86.     public Student getStudentByXuehao(String xuehao){
  87.         String sql="select * from student where xuehao='"+xuehao+"'";
  88.         Student student=null;
  89.         try {
  90.             conn=dbPool.getConnection();
  91.             st=conn.createStatement();
  92.             rs=st.executeQuery(sql);
  93.             if(rs.next()){
  94.                 student=new Student(rs.getString("xuehao"),
  95.                         rs.getString("userName"),
  96.                         rs.getString("userPwd"),
  97.                         rs.getInt("czxt"),
  98.                         rs.getInt("wjyl"),
  99.                         rs.getInt("sjjg")
  100.                 );
  101.             }
  102.             return student;
  103.             
  104.         } catch (SQLException e) {
  105.             try {
  106.                 conn.close();
  107.             } catch (SQLException e1) {
  108.                 e1.printStackTrace();
  109.             }
  110.             e.printStackTrace();
  111.             return null;
  112.         }
  113.     }
  114.     public boolean deleteStudent(String xuehao){
  115.         String sql="delete from student where xuehao='"+xuehao+"'";
  116.         conn=dbPool.getConnection();
  117.         try {
  118.             st=conn.createStatement();
  119.             st.execute(sql);
  120.             conn.close();
  121.             return true;
  122.         } catch (SQLException e) {
  123.             e.printStackTrace();
  124.             try {
  125.                 conn.close();
  126.             } catch (SQLException e1) {
  127.                 e1.printStackTrace();
  128.             }
  129.             return false;
  130.         }
  131.     }
  132.     public boolean updateStudent(Student student){
  133.         String sql="update student set userName='" +student.getUserName()+
  134.                 "',userPwd='" +student.getUserPwd()+"',czxt="+student.getCzxt()+
  135.                 ",wjyl="+student.getWjyl()+",sjjg="+student.getSjjg()+" where xuehao='"+student.getXuehao()+"'";
  136.         conn=dbPool.getConnection();
  137.         try {
  138.             st=conn.createStatement();
  139.             st.execute(sql);
  140.             conn.close();
  141.             return true;
  142.         } catch (SQLException e) {
  143.             e.printStackTrace();
  144.             try {
  145.                 conn.close();
  146.             } catch (SQLException e1) {
  147.                 e1.printStackTrace();
  148.             }
  149.             return false;
  150.         }
  151.     }
  152.     public boolean insertStudent(Student student){
  153.         String sql="insert into student values('"+student.getXuehao()+"','" +student.getUserName()+
  154.                 "','" +student.getUserPwd()+"',"+student.getCzxt()+
  155.                 ","+student.getWjyl()+","+student.getSjjg()+")";
  156.         //System.out.println(sql);
  157.         conn=dbPool.getConnection();
  158.         try {
  159.             st=conn.createStatement();
  160.             st.execute(sql);
  161.             conn.close();
  162.             return true;
  163.         } catch (SQLException e) {
  164.             e.printStackTrace();
  165.             try {
  166.                 conn.close();
  167.             } catch (SQLException e1) {
  168.                 e1.printStackTrace();
  169.             }
  170.             return false;
  171.         }
  172.     }
  173. }

<think>嗯,用户问的是如何在Spring Boot的properties文件中配置数据库连接。首先我需要回忆一下Spring Boot的数据库配置相关知识。记得在Spring Boot中,通常会在application.properties或者application.yml文件里配置数据源相关的属性。 用户可能用的是MySQL,因为之前的引用里有提到MySQL的URL。所以基本配置应该包括url、username、password、driver-class-name这些。对了,不同的数据库驱动类名可能不一样,比如MySQL是com.mysql.cj.jdbc.Driver,而旧版本可能用的是com.mysql.jdbc.Driver,需要注意版本问题。 另外,用户提到的引用里有druid连接池和分页配置,可能需要补充这部分内容。不过用户的问题主要是关于数据库连接的基本配置,可能不需要深入连接池的细节,但或许可以提到如何切换不同的连接池,比如HikariCP默认,或者使用Druid需要额外配置。 然后要确保语法正确,比如在properties文件中的格式,比如spring.datasource.url=jdbc:mysql://...,还有注意特殊字符是否需要转义,比如&符号在properties文件中应该写成&,或者使用URI编码。例如,在示例中的URL里用了&来分隔参数,这一点需要正确示范。 另外,可能需要提到配置连接池的一些常用参数,比如初始大小、最大连接数等,但用户可能只需要基础配置。同时,分页配置可能属于MyBatis的插件部分,比如PageHelper,但用户的问题集中在数据库连接,这部分可能暂时不需要涉及,除非用户进一步询问。 还要检查是否需要驱动依赖,比如在pom.xml中添加mysql-connector-java依赖,否则即使配置正确也会报错。不过用户的问题是关于properties文件的配置,可能已经知道需要添加依赖,但或许应该提一下确保依赖存在。 最后,生成相关问题的时候,要考虑用户可能的后续问题,比如连接池配置、多数据源、SSL设置或者异常处理等。这样能帮助用户更全面地了解相关配置。</think>### 在 Spring Boot 中配置数据库连接的步骤 #### 1. **基础配置(MySQL 示例)** 在 `application.properties` 文件中添加以下核心配置项: ```properties # 数据库连接基础配置 spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` #### 2. **连接池配置(HikariCP 默认)** Spring Boot 默认使用 HikariCP 连接池,可添加优化参数: ```properties # HikariCP 连接池配置 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=5 ``` #### 3. **切换其他连接池(如 Druid)** 若需使用 Druid 连接池,需额外添加依赖并配置: ```properties # Druid 配置示例 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 ``` #### 4. **配置验证** 通过以下方式验证配置是否生效: ```java @SpringBootTest public class DataSourceTest { @Autowired private DataSource dataSource; @Test void testConnection() throws SQLException { System.out.println("连接池类型:" + dataSource.getClass().getName()); System.out.println("活动连接数:" + ((HikariDataSource) dataSource).getHikariPoolMXBean().getActiveConnections()); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值