JDBC 数据库连接
Posted 黑土白云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC 数据库连接相关的知识,希望对你有一定的参考价值。
1. 第三种方式是最推荐的!
/** * 注意1.url中连接的数据库必须存在,比如hello必须存在,否则报错 * 2.user 和password是固定的,不能写成username 或 pass,否则报错 * @author ckang * */ public class JDBCDemo { private String url = "jdbc:mysql://localhost:3306/hello"; String user = "root"; String password = "root"; @Test public void connectDB1() throws Exception{ Properties props = new Properties(); props.setProperty("user", user); props.setProperty("password", password); Driver driver = new com.mysql.jdbc.Driver(); Connection connect = driver.connect(url, props); System.out.println(connect); } @Test public void connectDB2() throws Exception{ //1.注册数据库驱动,可是mysql oracle sqlserver Driver mysqlDriver = new Driver(); DriverManager.registerDriver(mysqlDriver);//可以注册多个不同的数据库 //2.创建连接 Connection connection = DriverManager.getConnection(url,user,password);//加入hello有密码和账号,此处不写就会报错 System.out.println(connection); } @Test public void connectDB3() throws Exception{ //1.注册数据库驱动程序,通过字节码来加载类信息,因为DriverManager.registerDriver都是静态方法 Class.forName("com.mysql.jdbc.Driver");//加载mysql的驱动类Driver //2.创建连接 Connection connection = DriverManager.getConnection(url, user, password); System.out.println(connection); } }
2. 创建表, 通过statement 执行固定的sql, 一般先在数据库先测试sql语句
/** * CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), gender VARCHAR(2)) DESC student DROP TABLE student * @author ckang * */ public class CreateDemo { private String url ="jdbc:mysql://127.0.0.1:3306/hello"; private String user = "root"; private String password = "root"; @Test public void create() throws Exception{ Statement stmt = null; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,user,password); stmt = conn.createStatement(); String sql = "CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), gender VARCHAR(2))"; stmt.execute(sql); } catch (ClassNotFoundException e) { throw new RuntimeException(e); }finally{ if(stmt != null){ stmt.close(); } if(conn != null){ conn.close(); } } } }
3.抽取公用类,抽取释放资源和获取连接的方法
public class JDBCUtils { private static String url = "jdbc:mysql://localhost:3306/hello"; private static String user = "root"; private static String password = "root"; private JDBCUtils(){} static{ try { Class.forName("com.mysql.jdbc.Driver");//1.注册驱动程序 } catch (Exception e) { throw new RuntimeException(e); } } //2. 获取数据库的连接的方法 public static Connection getConnection(){ try { return DriverManager.getConnection(url, user, password); } catch (Exception e) { throw new RuntimeException(e); } } //3.释放资源的方法 public static void close(Statement stmt , Connection conn){ if(null != stmt) { try { stmt.close(); } catch (Exception e) { throw new RuntimeException(e); } } if(null != conn) { try { conn.close(); } catch (Exception e) { throw new RuntimeException(e); } } } }
4. 曾删改查方法
public class SaveOrUpdate { @Test public void save(){ Connection conn = null; Statement stmt = null; try { conn = JDBCUtils.getConnection(); stmt = conn.createStatement(); String sql = "insert into student(name,gender)values(‘波多野结衣妹子‘,‘女‘)"; int count = stmt.executeUpdate(sql); System.out.println(count); } catch (Exception e) { throw new RuntimeException(e); }finally{ JDBCUtils.close(stmt, conn); } } //注意:1. update table student报错,只能写update student!!!! //如:"UPDATE student SET NAME=‘瑶瑶‘, gender=‘女‘ WHERE id = ‘2‘ AND NAME=‘zhangsan‘" //2. set多个值时候只能用逗号隔开不能用and隔开!!!! @Test public void update(){ Connection conn = null; Statement stmt = null; try { conn = JDBCUtils.getConnection(); stmt = conn.createStatement(); String sql = "UPDATE student SET NAME=‘我爱瑶瑶‘, gender=‘女‘ WHERE id =2"; stmt.executeUpdate(sql); } catch (Exception e) { throw new RuntimeException(e); }finally{ JDBCUtils.close(stmt, conn); } } @Test public void delete(){ Connection conn = null; Statement stmt = null; try { conn = JDBCUtils.getConnection(); stmt = conn.createStatement(); String sql = "delete from student WHERE id =2"; stmt.executeUpdate(sql); } catch (Exception e) { throw new RuntimeException(e); }finally{ JDBCUtils.close(stmt, conn); } } public List<Student> findAll(){ Connection conn = null; Statement stmt = null; try { conn = JDBCUtils.getConnection(); stmt = conn.createStatement(); String sql = "SELECT * FROM STUDENT"; ResultSet resultSet = stmt.executeQuery(sql); List<Student> studentList = new ArrayList<>(); while(resultSet.next()){ Student student = new Student(); student.setId(resultSet.getInt("id"));//列名必须与数据库的字段一样但不区分大小写 student.setName(resultSet.getString("NAME")); student.setGender(resultSet.getString("GeNdEr")); studentList.add(student); } return studentList; } catch (SQLException e) { throw new RuntimeException(e); } } @Test public void iterate(){ List<Student> studentList = findAll(); for(Student stu : studentList){ System.out.println(stu.getId()+"***"+stu.getName()+"****"+stu.getGender()); } } } class Student{ private int id; private String name; private String gender; public Student() {} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", gender=" + gender + "]"; } }
以上是关于JDBC 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章
关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段