理解 JDBC 的工作原理,掌握 JDBC 访问数据库; 掌握常见数据库 MYSQL ;
现在使用 JDBC 写一个简单的小程序,主要是使用 JDBC 连接 MySQL 数据库,然后对数据库进行一些基本的增删改查操作。
先设计一个数据库表,用于保存用户信息,建表语句如下:
CREATE TABLE `tbl_user_info` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(20) NOT NULL,`age` int(11) NOT NULL,`sex` int(1) NOT NULL,`create_dt` date NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;
在用户表中定义了几个字段,分别是 id,user_name,age,sex,create_dt,其中 id 是主键, 是自增长的,user_name 表示用户名,age 表示用户年龄,sex 表示用户的性别,这里的性别用数字表示,0 表示女性,1 表示男性,create_dt 表示创建的时间。预先在数据库中插入几条数据,数据如下:
定义一个 Bean,与数据库表中的各个字段对应:
UserVO.java
package com.imooc.jdbc;import java.util.Date;public class UserVO {private int id;private String userName;private int age;private int sex;private Date createDt;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}public Date getCreateDt() {return createDt;}public void setCreateDt(Date createDt) {this.createDt = createDt;}@Overridepublic String toString() {return "UserVO [id=" + id + ", userName=" + userName + ", age=" + age+ ", sex=" + sex + ", createDt=" + createDt + "]";}public UserVO() {}}
定义一个数据库连接类,用于获取 MySQL 的连接。MySQL 的 JDBC URL 编写方式为:jdbc:mysql://主机名称:连接端口/数据库的名称?参数= 值,在这个例子中我连接的数据库主机是一台远程主机,所以主机名称为远程主机的 ip 地址,如果数据库主机为本机,则可以定义为 localhost,在参数中指定用户名为 root,密码也是 root,为了避免中文乱码要指定 useUnicode 和 characterEncoding。因为连接的是 MySQL 数据库,所以程序一开始需要加载 MySQL 的数据库驱动,然后通过 DriverManager.getConn ection(String URL)方法获取数据库的连接。
DBUtil .java
package com.imooc.jdbc;import java.sql.Connection;
import java.sql.DriverManager;public class DBUtil {private static final String URI = "jdbc:mysql://192.168.2.207:3306/equipmenitsystem?"+ "user=root&password=123456&useUnicode=true&characterEncoding=UTF-8";private static final String DRIVER = "com.mysql.jdbc.Driver";public static Connection connectDB() throws Exception {//1、加载数据库驱动Class.forName(DRIVER);//2、获取数据库连接Connection conn = DriverManager.getConnection(URI);return conn;}}
在获取了数据库的连接之后,就可以操作数据库了,下面分别实现数据库的增删改查操作, 定义一个 UserDaoIab 类用于操作数据库。
package com.gec.dao;import com.gec.com.gec.util.DBUtil;
import com.gec.entity.UserVO;import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class UserDaoIab {//查询数据库所有信息public List queryAll() throws Exception {Connection conn = DBUtil.connectDB();String sql = "SELECT * FROM tbl_user_info";List userList = new ArrayList();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);System.out.println("数据库中全部用户信息如下:");while (rs.next()) {UserVO user = new UserVO();user.setId(rs.getInt("id"));user.setUserName(rs.getString("user_name"));user.setAge(rs.getInt("age"));user.setSex(rs.getInt("sex"));user.setCreateDt(rs.getDate("create_dt"));userList.add(user);}return userList;}//查询数据库用户特定条件信息public List queryByParams(List
Uservotest.class
package com.gec.test;import com.gec.dao.UserDao;
import com.gec.dao.UserDaoIab;
import com.gec.entity.UserVO;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class uservotest {//数据库所有信息查询
/* public static void main(String[] args) {UserDaoIab dao = new UserDaoIab();try {List userList = dao.queryAll();for (UserVO user : userList) {System.out.println(user);}} catch (Exception e) {e.printStackTrace();}}*///查询数据库特定条件信息
/* public static void main(String[] args) {UserDaoIab dao = new UserDaoIab();List
运行结果: