Java数据库连接方法
推荐使用方法二,更便于使用
方法一、直接连接,不封装到工具类中,主要步骤:
导入jar包:mysql-connector-java-5.1.46-bin.jar(点击跳转到下载界面),可到下面网站下载最新版https://dev.mysql.com/downloads/connector/,放在WebRoot/WEB-INF/lib/下(非maven项目)
方法:
1.加载驱动//com.mysql.jdbc.Driver
2.获取连接 Connection对象
3.获取用于向数据库发送SQL的Statement对象
4.执行sql,获取数据,解析数据
5.关闭连接,释放资源
将下面代码放到运行方法里即可
1 /* 协议:子协议://主机:端口/数据库名 */ 2 String url = "jdbc:mysql://localhost:3306/jdbctest"; 3 4 // 声明对象,url(数据库地址),user(数据库用户名),password(数据库密码)、connection(连接器)、statement(编译sql)、resutlSet(结果集) 5 String user = "root"; 6 String password = "root"; 7 8 Connection connection = null; 9 Statement statement = null; 10 ResultSet resultSet = null; 11 try { 12 // 1.加载驱动//com.mysql.jdbc.Driver 13 /* 14 * DriverManager.registerDriver(new 15 * Driver());用这种方法会加载两次驱动,也就是说会创建两个drive对象 16 */ 17 Class.forName("com.mysql.jdbc.Driver"); 18 // 2.获取连接 19 connection = DriverManager.getConnection(url, user, password); 20 21 // 3.获取用于向数据库发送SQL的Statement对象 22 statement = connection.createStatement(); 23 24 // 4.执行sql,获取数据 25 resultSet = statement.executeQuery("SELECT * FROM users;"); 26 27 // 解析数据 28 while (resultSet.next()) { 29 int id = resultSet.getInt("id"); 30 String name = resultSet.getString("name"); 31 String psd = resultSet.getString("password"); 32 String email = resultSet.getString("email"); 33 String birthday = resultSet.getString("birthday"); 34 35 System.out.println(id + " " + name + " " + psd + " " + email 36 + " " + birthday); 37 } 38 } catch (ClassNotFoundException e) { 39 e.printStackTrace(); 40 } catch (SQLException e) { 41 e.printStackTrace(); 42 } finally { 43 44 //5.关闭连接,释放资源 45 if (resultSet != null) { 46 try { 47 resultSet.close(); 48 } catch (SQLException e) { 49 // TODO Auto-generated catch block 50 e.printStackTrace(); 51 } 52 resultSet = null; 53 } 54 55 if (statement != null) { 56 try { 57 statement.close(); 58 } catch (SQLException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 } 62 statement = null; 63 } 64 65 if (connection != null) { 66 try { 67 connection.close(); 68 } catch (SQLException e) { 69 // TODO Auto-generated catch block 70 e.printStackTrace(); 71 } 72 connection = null; 73 } 74 }
方法二、将数据库连接封装成一个工具类
这样做的好处是,在实际开发中,就能做到,改一处即可修改全局。
1.建一个名为db.properties的配置文件,放于src/
url=jdbc:mysql://localhost:3306/jdbctest username=root password=root driver=com.mysql.jdbc.Driver
2.工具类:
1 import java.io.IOException; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.Properties; 8 9 public class JdbcUtil { 10 11 //私有静态变量,用以读取配置文件 12 private static Properties config=new Properties(); 13 14 static{ 15 try { 16 //配置资源文件 17 config.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties")); 18 19 //加载驱动 20 Class.forName(config.getProperty("driver")); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } catch (ClassNotFoundException e) { 24 e.printStackTrace(); 25 } 26 } 27 28 public static Connection getConnection(){ 29 Connection connection=null; 30 try { 31 connection=DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password")); 32 } catch (SQLException e) { 33 e.printStackTrace(); 34 } 35 36 return connection; 37 } 38 //用以关闭连接,释放资源 39 public static void releaseConn(Connection connection, Statement statement, 40 ResultSet resultSet) { 41 if(resultSet!=null){ 42 try { 43 resultSet.close(); 44 } catch (SQLException e) { 45 e.printStackTrace(); 46 } 47 resultSet=null; 48 } 49 50 if(statement!=null){ 51 try { 52 statement.close(); 53 } catch (SQLException e) { 54 e.printStackTrace(); 55 } 56 statement=null; 57 } 58 59 if(connection!=null){ 60 try { 61 connection.close(); 62 } catch (SQLException e) { 63 e.printStackTrace(); 64 } 65 connection=null; 66 } 67 } 68 69 70 }
3.使用实例:(将下面代码放入运行方法中即可)
1 Connection connection = null; 2 Statement statement = null; 3 ResultSet resultSet = null; 4 try { 5 // 调用工具类中的静态方法来获取连接 6 connection = JdbcUtil.getConnection(); 7 statement = connection.createStatement(); 8 resultSet = statement.executeQuery("select * from users"); 9 while (resultSet.next()) { 10 int id = resultSet.getInt("id"); 11 String name = resultSet.getString("name"); 12 String psd = resultSet.getString("password"); 13 String email = resultSet.getString("email"); 14 String birthday = resultSet.getString("birthday"); 15 16 System.out.println(id + " " + name + " " + psd + " " + email 17 + " " + birthday); 18 19 } 20 } catch (Exception e) { 21 e.printStackTrace(); 22 } finally { 23 // 调用工具类中的静态方法来关闭连接,释放资源 24 JdbcUtil.releaseConn(connection, statement, resultSet); 25 } 26 }