西周舍利 2021-03-05 15:45 采纳率: 81.8%
浏览 95
已结题

mysql数据库连接问题

package util;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;

public class DBUtil {
    private static  String url="jdbc:mysql://localhost:3306/hospital?characterEncoding=utf8";
//    &serverTimezone=UTC
    private static final String user="root";
    private static final String password="12345";
    private static Connection conn=null;
    private static PreparedStatement ps=null;
    private static ResultSet rs=null;
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //init();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    private static void init(){
        String sql="create database if not exists hospital";
        executeUpdate(sql,null);
        url="jdbc:mysql://localhost:3306/hospital?characterEncoding=utf8&serverTimezone=UTC";
    }
    public static Connection createConn(){
        try {
            return DriverManager.getConnection(url,user,password);
            System.out.println(user+","password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static ResultSet executeQuery(String sql, Object[] params){
        conn=createConn();
        System.out.println("连接成功");
        try {
            ps=conn.prepareStatement(sql);
            prepare(ps,params);
            rs=ps.executeQuery();
            System.out.println("查询成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
    public static boolean executeUpdate(String sql, Object[] params){
        conn=createConn();
        int i=0;
        try {
            ps=conn.prepareStatement(sql);
            prepare(ps,params);
            i=ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
        if(i>0)
            return true;
        return false;
    }
    public static int getCount(String sql, Object[] params){
        conn=createConn();
        int i=0;
        try {
            rs=executeQuery(sql,params);
            if(rs.next()){
                i=rs.getInt(1);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
        return i;
    }
    public static void Batch(String sql){
        conn=createConn();
        try {
            ps=conn.prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void addBatch(Object[] o){
        try {
            prepare(ps,o);
            ps.addBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void executeBatch(){
        try {
            ps.executeBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
    }
    private static void prepare(PreparedStatement ps, Object[] params) throws SQLException {
        if(params!=null){
            for(int i=0;i<params.length;i++){
                ps.setObject(i+1,params[i]);
            }
        }
    }
    public static void closeAll(){
        try {
            if(rs!=null)
                rs.close();
            if(ps!=null)
                ps.close();
            if(conn!=null)
                conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static ArrayList<HashMap<String, String>> getHashmap(String sql, Object[] params){
        ArrayList<HashMap<String,String>> list=new ArrayList<>();
        ResultSet rs = executeQuery(sql, params);
        try {
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            while (rs.next()){
                HashMap<String, String> hashMap = new HashMap<>();
                for(int i=1;i<=columnCount;i++){
                    hashMap.put(rsmd.getColumnLabel(i),rs.getString(i));
                }
                list.add(hashMap);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }

    public static void main(String[] args) {
        String sql="select patient.name as pname,recode.ordertime,recode.state, recode.id as rid,numsource.serialnumber,numsource.nstime,workday.worktime\n" +
                "from workday,numsource,recode,patient where\n" +
                "workday.doctorid=? and workday.id=numsource.workdayid and numsource.id=recode.nid and recode.pid=patient.id\n" +
                "order by ordertime desc";
        ArrayList<HashMap<String, String>> hashmap = getHashmap(sql, new Object[]{"1"});
        for (int i=0;i<hashmap.size();i++){
            System.out.println(hashmap.get(i));
        }
    }
}
mysql版本是5.7,但是报错提示com.mysql.cj.jdbc.xxx,idea测试数据库连接时也提示要设置时区。
但我用的是mysql5.7
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at util.DBUtil.createConn(DBUtil.java:40)
	at util.DBUtil.executeQuery(DBUtil.java:47)
	at dao.PatientDao.query(PatientDao.java:30)
	at servlet.Login.service(Login.java:56)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at filter.MyFilter.doFilter(MyFilter.java:39)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
  • 写回答

4条回答 默认 最新

  • 西周舍利 2021-03-05 15:47
    关注

    前端点击登录时,报错

    HTTP Status 500 – Internal Server Error

    Type 异常报告

    描述 服务器遇到一个意外的情况,阻止它完成请求。

    Exception

    java.lang.NullPointerException
    	util.DBUtil.executeQuery(DBUtil.java:49)
    	dao.PatientDao.query(PatientDao.java:30)
    	servlet.Login.service(Login.java:56)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    	filter.MyFilter.doFilter(MyFilter.java:39)
    

    ):注意 主要问题的全部 stack 信息可以在 server logs 里查看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装