老师看看什么原因

老师看看什么原因


package com.jdbc.news;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.jdbc.hrapp.entity.Employee;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.Scanner;

public class InsertNews implements Command {
   @Override
   public void execute() {
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入新闻标题");
       String title = sc.next();
       System.out.println("请输入新闻内容 ");
       String content = sc.next();
       System.out.println("请输入新闻日期,按年-月-日 的形式输入");
       String time = sc.next();
       java.util.Date udTime = null;
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       try {
           udTime = sdf.parse(time);
       } catch (ParseException e) {
           e.printStackTrace();
       }
       long times = udTime.getTime();
       java.sql.Date create_time = new java.sql.Date(times);


       Properties properties = new Properties();
       String propertyFile = InsertNews.class.getResource("/com/jdbc/news/druid-config.properties").getPath();
       Connection conn = null;
       try {
           propertyFile = new URLDecoder().decode(propertyFile, "UTF-8");
           properties.load(new FileInputStream(propertyFile));
           DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           conn = dataSource.getConnection();
           conn.setAutoCommit(false);
           String sql = "INSERT INTO news(title,content,create_time) VALUES(?,?,?)";
           QueryRunner qr = new QueryRunner();
           int cnt = qr.update(conn,sql,new Object[]{title,content,create_time});
           conn.commit();
           if (cnt == 1){
               System.out.println("添加成功");
           }else {
               System.out.println("添加失败");
           }

       } catch (Exception e) {
           e.printStackTrace();
           try {
               if (conn != null && !conn.isClosed()){
                   conn.rollback();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       }finally {
           try {
               if (conn != null && !conn.isClosed()){
                   conn.close();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       }

   }
}


package com.jdbc.news;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.jdbc.hrapp.good.SelectGoods;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.net.URLDecoder;
import java.util.List;
import java.util.Properties;

public class SelectNews implements Command {
   @Override
   public void execute() {
       Properties properties = new Properties();
       String propertyFile = SelectNews.class.getResource("/com/jdbc/news/druid-config.properties").getPath();
       try {
           propertyFile = new URLDecoder().decode(propertyFile, "UTF-8");
           properties.load(new FileInputStream(propertyFile));
           DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           QueryRunner qr = new QueryRunner(dataSource);
           List<News> list = qr.query("SELECT * FROM news",new BeanListHandler<>(News.class));
           for (News n : list){
               System.out.println(n.toString());
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}


package com.jdbc.news;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.jdbc.hrapp.good.SelectGoods;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import java.util.Scanner;

public class UpdateNews implements Command {
   @Override
   public void execute() {
       Command command = new SelectNews();
       command.execute();
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入要修改的新闻id");
       Integer id = sc.nextInt();
       Properties properties = new Properties();
       String propertyFile = UpdateNews.class.getResource("/com/jdbc/news/druid-config.properties").getPath();
       try {
           propertyFile = new URLDecoder().decode(propertyFile, "UTF-8");
           properties.load(new FileInputStream(propertyFile));
           DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           QueryRunner qr = new QueryRunner(dataSource);
           List<News> list = qr.query("SELECT * FROM news WHERE id = ?",new BeanListHandler<>(News.class),new Object[]{id});
           for (News n : list){
               System.out.println(n.toString());
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
       System.out.println("请输入要修改的新闻标题");
       String title = sc.next();
       System.out.println("请输入要修改的新闻内容");
       String content = sc.next();

       Connection conn = null;
       try {
           propertyFile = new URLDecoder().decode(propertyFile, "UTF-8");
           properties.load(new FileInputStream(propertyFile));
           DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           conn = dataSource.getConnection();
           conn.setAutoCommit(false);
           QueryRunner rs = new QueryRunner();

           String sql = "UPDATE news SET  title = ?, content = ? WHERE id = ?";
           int cnt = rs.update(conn, sql, new Object[]{title,content,id});
           conn.commit();
           if (cnt == 1){
               System.out.println("修改成功");
           }else {
               System.out.println("修改失败");
           }
       } catch (Exception e) {
           e.printStackTrace();
           try {
               if (conn != null && !conn.isClosed()) {
                   conn.rollback();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       } finally {
           try {
               if (conn != null && !conn.isClosed()) {
                   conn.close();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       }

   }
}


package com.jdbc.news;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Scanner;

public class DeleteNews implements Command {
   @Override
   public void execute() {
       Command command = new SelectNews();
       command.execute();
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入要删除新闻id");
       Integer id = sc.nextInt();

       Properties properties = new Properties();
       String propertyFile = DeleteNews.class.getResource("/com/jdbc/news/druid-config.properties").getPath();
       Connection conn = null;
       try {
           propertyFile = new URLDecoder().decode(propertyFile, "UTF-8");
           properties.load(new FileInputStream(propertyFile));
           DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           conn = dataSource.getConnection();
           conn.setAutoCommit(false);
           String sql = "DELETE FROM news WHERE id = ?";
           QueryRunner qr = new QueryRunner();
           int cnt = qr.update(conn,sql,new Object[]{id});
           conn.commit();
           if (cnt == 1){
               System.out.println("删除成功");
           }else {
               System.out.println("删除失败");
           }
       } catch (Exception e) {
           e.printStackTrace();
           try {
               if (conn != null && !conn.isClosed()){
                   conn.rollback();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       }finally {
           try {
               if (conn != null && !conn.isClosed()){
                   conn.close();
               }
           } catch (SQLException throwables) {
               throwables.printStackTrace();
           }
       }

   }
}

package com.jdbc.news;

import java.util.Scanner;

public class DBUtilNews {
   public static void menu(){
       System.out.println("欢迎来到新闻管理系统");
       System.out.println("========================");
       System.out.println("      1. 添加新闻");
       System.out.println("      2. 查看新闻");
       System.out.println("      3. 编辑新闻");
       System.out.println("      4. 删除新闻");
       System.out.println("      5. 退出系统");
   }

   public static void main(String[] args) {
       Command command = null;
       while (true){
           menu();
           Scanner sc = new Scanner(System.in);
           System.out.println("请输入1-5之间的数字进行操作");
           int temp = sc.nextInt();
           if (temp == 5){
               break;
           }
           switch (temp){
               case 1:
                   command = new InsertNews();
                   command.execute();
                   break;
               case 2:
                   System.out.println("新闻列表如下");
                   command = new SelectNews();
                   command.execute();
                   break;
               case 3:
                   command = new UpdateNews();
                   command.execute();
                   break;
               case 4:
                   command = new DeleteNews();
                   command.execute();
                   break;
               default:
                   System.out.println("输入错误,请重新输入1-5之间的数字");
           }
       }
   }
}

http://img1.sycdn.imooc.com//climg/5f68bc960816b7b616770601.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,是的,这样也是可以解决这个问题

initialSize :连接池启动时创建的初始化连接数量

maxActive :连接池中可同时连接的最大的连接数

如果写成一样的话,初始化数量跟最大连接数一致,导致连接数被占满,就会出现这个问题

如果将初始化数量调小,最大连接数变大,从而就可以避免连接数被占满

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


Deity_zc 提问者 2020-09-22 10:51:34

是重复操作导致
有个问题, 我把默认创建连接的initialSize的数量 和最大连接maxActive数量写的一致, 运行了几次就报错了 
我要是把默认连接数量改小就不会报错了  这是为什么

好帮手慕阿园 2020-09-22 10:30:37

同学你好,根据报错提示显示,数据源拒绝建立连接,来自服务器的消息:“连接太多”

同学是不是测试的比较频繁,导致连接太多,同学可以按照以下方式修改一下配置文件试试

打开MYSQL安装目录打开my.ini文件,找到max_connections(在大约第93行)默认是100 ,一般设置到500~1000比较合适,最后重启mysql

如:max_connections=500

祝学习愉快

  • 提问者 Deity_zc #1
    是重复操作导致 有个问题, 我把默认创建连接的initialSize的数量 和最大连接maxActive数量写的一致, 运行了几次就报错了  我要是把默认连接数量改小就不会报错了  这是为什么
    2020-09-22 11:16:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师