简介
JDBC步骤
1)注册驱动
2)建立数据库连接(Connection)
3)sql语句
4)获取sql发送器(Statement)
5)执行sql返回结果集(ResultSet)
6) 处理结果集
7)关闭资源(ResultSet,Statement,Connection)

1.准备相关的包
mysql
mysql-connector-java
5.1.6

2.创建MysqlJDBC类


3.添加常量
public static final String url = "localhost:3306/test";//数据库连接地址public static final String name = "com.mysql.jdbc.Driver";//mysql驱动public static final String username = "root";//mysql用户名public static final String password = "root";//mysql密码public static Connection conn = null;//数据库连接public static Statement stmt = null;//SQL语句发送器public static ResultSet rs = null;//结果集public static Logger logger = LoggerFactory.getLogger(MysqlJDBC.class);//日志

4.动态加载mysql驱动
static{ try { Class.forName(name);// 动态加载mysql驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); }}

5.添加关闭方法
private static void close(){ try{ if(rs!=null){ rs.close(); } }catch(SQLException e){ e.printStackTrace(); } try{ if(stmt!=null){ stmt.close(); } }catch(SQLException e){ e.printStackTrace(); } try{ if(conn!=null){ conn.close(); } }catch(SQLException e){ e.printStackTrace(); }}

6.Connection连接数据库
public static Connection getConnection(String url,String username,String password){ try{ logger.info("MysqlJDBC==>getConnection===start==="); String url01 ="jdbc:mysql://"+url+"?&useUnicode=true&characterEncoding=UTF8"; conn= DriverManager.getConnection(url01,username,password);//获取连接对象 logger.info("MysqlJDBC==>getConnection===conn="+conn); return conn; }catch(SQLException e){ e.printStackTrace(); return null; }}

7.测试连接数据库方法
public static void main(String[] args) {
MysqlJDBC.getConnection(url,username,password);//测试连接数据库
}

8.添加创建表方法
public static int setCreateTable(String url,String username,String password,String tableName,String sql){ logger.info("MysqlJDBC==>setCreateTable===start==="); MysqlJDBC.getConnection(url,username,password); int result=0; try { stmt = conn .createStatement(); String sql1 = "DROP TABLE IF exists "+tableName;//删除表 int result1 = stmt.executeUpdate(sql1); result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功 logger.info("MysqlJDBC==>setCreateTable==>result="+result+";sql="+sql); } catch (SQLException e) { e.printStackTrace(); }finally { close();//关闭连接 } return result;}

9.测试创建表方法
public static void main(String[] args) {
StringBuilder sbr=new StringBuilder();
String tableName="student";
sbr.append("CREATE TABLE `").append(tableName).append("` (");
sbr.append("id int auto_increment primary key COMMENT '自增主键id',");
sbr.append(" `no` varchar(200) DEFAULT NULL COMMENT '编号',");
sbr.append(" `name` varchar(200) DEFAULT NULL COMMENT '名称',");
sbr.append("create_time timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'");
sbr.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='").append("学生表").append("';");
MysqlJDBC.setCreateTable(url,username,password,tableName,sbr.toString());//测试创建表方法
}

10.添加新增数据方法(修改,删除)共用一个方法
public static int setInsertData(String url, String username, String password,String sql){ logger.info("MysqlJDBC==>setInsertData===start==="); MysqlJDBC.getConnection(url,username,password); int result=0; try { stmt = conn .createStatement(); result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功 logger.info("MysqlJDBC==>setInsertData==>result="+result+";sql="+sql); } catch (SQLException e) { e.printStackTrace(); }finally { close(); } return result;}

11.测试新增数据方法
public static void main(String[] args) {
String str="insert into student(no,name) values('20190726','dyp')";
setInsertData(url,username,password,str);//测试新增数据方法
}

12.添加查询方法
public static void setSelectData(String url,String username,String password,String sql){ logger.info("MysqlJDBC==>setSelectData===start==="); MysqlJDBC.getConnection(url,username,password); try { stmt = conn .createStatement(); rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值 logger.info("MysqlJDBC==>setSelectData==>sql="+sql); while(rs.next()){ System.out.println("id:"+rs.getString(1)+";no:"+rs.getString(2)+";name:"+rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); }finally { close(); }}

13.测试查询方法
public static void main(String[] args) {
String sql="select * from student";
MysqlJDBC.setSelectData(url,username,password,sql);//查询数据
}

14.修改数据与添加方法相同(测试)
public static void main(String[] args) {
System.out.println("修改前查询");
String sql="select * from student";
MysqlJDBC.setSelectData(url,username,password,sql);//查询数据
System.out.println("修改数据中");
String str="update student set name='dyp001 where id=1";
setInsertData(url,username,password,str);//修改数据与添加数据方法一样
System.out.println("修改后查询");
MysqlJDBC.setSelectData(url,username,password,sql);//查询数据
}

15.删除数据与添加方法相同(测试)
public static void main(String[] args) {
System.out.println("删除前查询");
String sql="select * from student";
MysqlJDBC.setSelectData(url,username,password,sql);//查询数据
System.out.println("删除数据中");
String str="delete from student where id=2";
setInsertData(url,username,password,str);//删除数据与添加数据方法一样
System.out.println("删除后查询");
MysqlJDBC.setSelectData(url,username,password,sql);//查询数据
}
