JDBC的详细使用
1.首先说一下需要用到的工具:
①我这里用的数据库是MySql5.6 ,MySql6.0开始被Oracle收购需要付费了,6.0以下版本免费。
②去Maven仓库下载JDBC的jar包 Maven仓库地址:http://mvnrepository.com/ 我使用的版本是5.0.5
③将jar包放到项目下的lib目录下
2.接下来给大家上一段简单的使用代码
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 7 import com.mysql.jdbc.Driver; 8 9 /** 10 * 普通的jdbc操作 11 * 12 * @author AdminHeJun 13 * 14 */ 15 public class JdbcNomal { 16 private static PreparedStatement prepareStatement; 17 private static ResultSet result; 18 19 public static void main(String[] args) throws Exception { 20 // 得到数据库连接 21 Connection connection = getConnection(); 22 // 需要执行的sql 23 String sql = "select *from info"; 24 prepareStatement = connection.prepareStatement(sql); 25 result = prepareStatement.executeQuery(); 26 27 while (result.next()) { 28 String id = result.getString(1); 29 String name = result.getString(2); 30 String age = result.getString(3); 31 System.out.println("id=" + id + "---name=" + name + "----age=" 32 + age); 33 } 34 // 关闭结果集 35 result.close(); 36 // 操作完关闭连接 37 connection.close(); 38 } 39 40 private static Connection getConnection() { 41 // 得到数据库连接 42 Connection connection; 43 try { 44 // 注册jdbc驱动 45 DriverManager.registerDriver(new Driver()); 46 // 参数1:数据库地址 惨数2:数据库用户名 参数3:密码 47 connection = DriverManager 48 .getConnection("jdbc:mysql://127.0.0.1:3306/testdb", 49 "root", "hejun254331"); 50 System.out.println("数据库链接成功!"); 51 return connection; 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 return null; 55 } 56 57 } 58 }
3.给大家分享一下我在实际开发中对JDBC操作拿到数据库连接的方法
1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.util.Properties; 7 8 import java.sql.PreparedStatement; 9 10 /** 11 * @author AdminHeJun 为了开发的方便起见 我把数据库的连接信息放在了DBConfig.properties配置文件中方便管理 12 * 此配置文件存储数据的方式与Map的键值对是一样的通过键取相应的值 13 * 此类中调用了getConnection方法就必须要调用releaseConnection方法释放资源 14 */ 15 public class JdbcUtils { 16 // 数据库用户 17 private static String user; 18 // 数据库密码 19 private static String password; 20 // 数据库连接地址 21 private static String conUrl; 22 // 数据库连接驱动完整包名 23 private static String driverName; 24 // 此工具类的实例 25 private static JdbcUtils instance; 26 27 // 获取配置信息的静态代码块 28 static { 29 try { 30 // 得到配置文件的输入流 JdbcUtils.class.getResourceAsStream此方法是获取当前类包名下的文件输入流 31 InputStream inputStream = JdbcUtils.class 32 .getResourceAsStream("DBConfig.properties"); 33 // 创建一个操作配置文件的对象 见名知意 不多做解释了 34 Properties properties = new Properties(); 35 // 加载配置文件的输入流 36 properties.load(inputStream); 37 // 开始获取配置文件里的信息 38 user = (String) properties.get("user"); 39 password = (String) properties.get("password"); 40 conUrl = (String) properties.get("connUrl"); 41 driverName = (String) properties.get("driverName"); 42 System.out.println("获取配置信息成功!"); 43 System.out.println("user=" + user + "\npassword=" + password 44 + "\nconUrl=" + conUrl + "\ndriverName=" + driverName); 45 } catch (Exception e) { 46 System.out.println("获取配置信息出错!"); 47 } 48 } 49 // 注册数据库驱动的静态代码块 50 static { 51 try { 52 Class.forName(driverName); 53 System.out.println("驱动注成功!"); 54 } catch (Exception e) { 55 System.out.println("驱动注册失败!"); 56 } 57 } 58 59 // 私有的构造方法防止外界直接new对象 这里是通过 getInstance方法来获取此类的实例 60 private JdbcUtils() { 61 62 } 63 64 // 获取此类的实例 这种设计方法也就是常说的java单列设计模式 65 public static JdbcUtils getInstance() { 66 if (instance == null) { 67 // 防止多线程同时操作 68 synchronized (JdbcUtils.class) { 69 instance = new JdbcUtils(); 70 } 71 } 72 return instance; 73 } 74 75 // 得到数据库连接对象 76 public Connection getConnection() { 77 try { 78 Connection connection = DriverManager.getConnection(conUrl, user, 79 password); 80 System.out.println("数据库连接成功!"); 81 return connection; 82 } catch (SQLException e) { 83 e.printStackTrace(); 84 System.out.println("数据库连接失败!"); 85 } 86 return null; 87 } 88 89 // 释放连接资源 90 public void releaseConnection(Connection connection, 91 PreparedStatement pStatement, ResultSet rSet) { 92 try { 93 // 关闭结果集 94 if (rSet != null) { 95 rSet.close(); 96 } 97 // 关闭sql语句执行对象 98 if (pStatement != null) { 99 pStatement.close(); 100 } 101 // 关闭数据库连接 102 if (connection != null) { 103 connection.close(); 104 } 105 } catch (SQLException e) { 106 e.printStackTrace(); 107 System.out.println("关闭资源出错!"); 108 } 109 } 110 }
调用演示
1 public static void main(String[] args) throws Exception { 2 // 得到连接 3 Connection connection = JdbcUtils.getInstance().getConnection(); 4 String sql = "select *from info"; 5 PreparedStatement prepareStatement = connection.prepareStatement(sql); 6 ResultSet resultSet = prepareStatement.executeQuery(); 7 while (resultSet.next()) { 8 String id = resultSet.getString(1); 9 String name = resultSet.getString(2); 10 String age = resultSet.getString(3); 11 System.out.println("id=" + id + "---name=" + name + "----age=" 12 + age); 13 } 14 // 释放资源 15 JdbcUtils.getInstance().releaseConnection(connection, prepareStatement, 16 resultSet); 17 18 }
打印结果:
DBConfig.properties文件截图