Java连接数据库
新建web project
- com:包名
- gx:自己的包名
- servlet/web/controller 放servlet(有点类似mvc中的控制器,用来接收页面的参数,放回参数给页面,控制页面跳转,以及参数校验,但不进行数据的操作,只负责调用)
- servlce: 放服务层的接口(Java中的服务:有的时候是对更底层的调用,有的时候就是对业务逻辑的处理)
- impl:服务接口的实现类
- dao: 数据库操作接口(和数据库中的表一一对应,就是相当于对数据库的表的每一个的封装,注意:一个dao只能操作一张表)
- impl:数据库操作接口的实现类
- po:数据的实体类模型
- vo:用来和页面对应的一个实体类
- common:放公共的类
- filter:过滤器
- util:工具类
- gx:自己的包名
JDBC链接数据库:
常用接口:
- 提供的接口包括:JAVA API:提供对JDBC的管理链接;
- JAVA Driver API:支持JDBC管理到驱动器 连接。
- DriverManager:这个类管理数据库驱动程序的列表,查看加载的驱动是否符合JAVA Driver API的 规范。
- Connection:与数据库中的所有的通信是通过唯一的连接对象。
- Statement/PreparedStatement:用于执行静态SQL语句并返回其生成的结果/SQL语句已预编译并储存在一个PrepareStatement对象中,然后可以使用该对象多次有效地执行此语句;
- ResultSet:它是一个迭代器,用于检索查询数据。(表示数据结果集的数据 表,通常通过执行查询数据库的语句生成;
eg:
//第一步;加载驱动; Class.forName("com.mysql.cj.jdbc.Driver"); //第二步:获取数据库链接 String url="jdbc:mysql://localhost:3306/demo_db_2019?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false"; String userName="root"; String passWord="root"; Connection conn=null; PreparedStatement ps=null; ResultSet re=null; try { conn= DriverManager.getConnection(url,userName,passWord); //第三步: 创建 statement //Statement statement=conn.createStatement(); String strSql="SELECT id,user_name,`passWord`,read_name,sex,age,birthday,phone,address,`role id` FROM sys_user"; ps=conn.prepareStatement(strSql); //第四步:执行; re=ps.executeQuery(); //第五步:获取数据; while (re.next()){ StringBuffer buffer=new StringBuffer(); int id=re.getInt("id"); String username=re.getString("user_name"); String realName=re.getString("read_name"); byte sex=re.getByte("sex"); Date birthday=new Date(re.getDate("birthday").getTime()); buffer.append("id="+id); buffer.append(";user_name="+username); buffer.append(";realName="+realName); buffer.append(";sex="+sex); buffer.append(";birthday="+birthday); System.out.println(buffer.toString()); } System.out.println(conn); } catch (SQLException SQLException) { SQLException.printStackTrace(); }finally { if (conn!=null){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(ps!=null){ try { ps.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (re!=null){ try { re.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } }
Mysql 驱动和连接字符串
版本 | 驱动 | 链接字符串 |
5.x | com.mysql.jdbc.Driver | jdbc:mysql://localhost:3306/dbname? useUnicode=true&characterEncoding=utf8 |
8.x | com.mysql.cj.jdbc.Driver | r jdbc:mysql://localhost:3306/demodb? characterEncoding=UTF8&serverTimezone=Asia/Shanghai&useSSL=false |