java获取 jdbc.pro_JDBC(获取数据库连接、自定义JDBC工具类)

1、JDBC

(1)概念:

JDBC(Java DataBase Connectivity,java数据库连接),是java程序访问数据库的标准API,是由java语言编写的类和接口组成。但是访问不同的数据库要有不同的数据库驱动。java只是提供接口,具体实现由不同的数据库生产厂商来实现(数据库驱动)。

3b442ebd81d0883a7d52a56917ccf193.png

(2)使用JDBC访问数据库:

加载驱动:

Class.forName("com.mysql.jdbc.Driver");

forName方法是Class类的静态方法,参数是要加载的驱动程序的名称。

创建数据库连接:

String url = "jdbc:mysql://localhost:3306/student mangement system";//url: 数据库地址  jdbc:mysql://连接主机IP:端口号//数据库名字

String username="root";

String password="root";

Connection con= DriverManager.getConnection(url, username, password);

url是数据库地址,连接数据库还需要数据库的用户名和密码

DriverManager类的getConnection实现了实现数据库连接的方法

创建Statement对象:

Statement对象或他的子类,为数据库传输sql语句并返回执行结果。

Statement stat = con.createStatement();

执行sql语句:

即通Statement对象调用方法执行sql语句。

public int executeUpdate(String sql);  执行insert 、update、 delete语句,或者是DDL语句,返回值是受影响的行数。

public ResultSet executeQuery(String sql);  执行select语句,将结果集封装在结果集对象ResultSet中。

释放资源:

stat.close();

con.close();

2、自定义JDBC工具类

(1)不含配置文件:

因为数据库的连接代码都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取数据库的连接对象。

1 import java.sql.Connection;

2 import java.sql.DriverManager;

3 import java.sql.ResultSet;

4 import java.sql.SQLException;

5 import java.sql.Statement;

6

7 public final class JDBCUtils {// 不能被继承或重写

8 privateJDBCUtils() {

9 }

10

11 private staticConnection con;

12

13 static{

14 try{

15 Class.forName("com.mysql.jdbc.Driver");

16 String url = "jdbc:mysql://localhost:3306/student mangement system";

17 String username = "root";

18 String password = "root";

19 con =DriverManager.getConnection(url, username, password);

20 } catch(Exception e) {

21 e.printStackTrace();

22 throw new RuntimeException(e + "数据库连接失败");

23 }

24 }

25

26 public staticConnection getConnection() {

27 returncon;

28 }

29

30 public static voidclose(Connection con, Statement stat) {

31

32 if (stat != null) {

33 try{

34 stat.close();

35 } catch(SQLException e) {

36 e.printStackTrace();

37 System.out.println("stat流关闭异常!");

38 }

39 }

40

41 if (con != null) {

42 try{

43 con.close();

44 } catch(SQLException e) {

45 e.printStackTrace();

46 System.out.println("con流关闭异常!");

47 }

48 }

49

50 }

51

52 public static voidclose(Connection con, Statement stat, ResultSet rs) {

53 if (rs != null) {

54 try{

55 rs.close();

56 } catch(SQLException e) {

57 e.printStackTrace();

58 System.out.println("rs流关闭异常!");

59 }

60 }

61

62 if (stat != null) {

63 try{

64 stat.close();

65 } catch(SQLException e) {

66 e.printStackTrace();

67 System.out.println("stat流关闭异常!");

68 }

69 }

70

71 if (con != null) {

72 try{

73 con.close();

74 } catch(SQLException e) {

75 e.printStackTrace();

76 System.out.println("con流关闭异常!");

77 }

78 }

79

80 }

81 }

测试工具类:

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public classTest {

public static voidmain(String[] args)throws Exception {

Connection con =JDBCUtils.getConnection();

PreparedStatement pst = con.prepareStatement("SELECT sname,studentno FROM student");

ResultSet rs =pst.executeQuery();

while(rs.next()){

System.out.println(rs.getString("sname")+" "+rs.getString("studentno"));

}

JDBCUtils.close(con, pst, rs);

}

}

1ddba1a34eed0d78d5a3fe322a355542.png

(2)含有配置文件的工具类:

1 import java.io.IOException;

2 import java.io.InputStream;

3 import java.sql.Connection;

4 import java.sql.DriverManager;

5 import java.sql.ResultSet;

6 import java.sql.SQLException;

7 import java.sql.Statement;

8 import java.util.Properties;

9

10 public classJDBCUtils {

11 private staticConnection con;

12 private staticString driver;

13 private staticString url;

14 private staticString username;

15 private staticString password;

16

17 static {// 静态代码块只执行一次,获取一次信息即可

18 try{

19 readConfig();

20 Class.forName(driver);

21 con =DriverManager.getConnection(url, username, password);

22 } catch(Exception ex) {

23 throw new RuntimeException("数据库连接失败");

24 }

25 }

26 /*

27 * getClassLoader();返回该类的加载器

28 * getResourceAsStream();查找具有给定名称的资源

29 */

30 private static voidreadConfig() {

31 InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("JDBC.properties");

32 Properties pro = newProperties();

33 try{

34 pro.load(in);

35 } catch(IOException e) {

36 e.printStackTrace();

37 }

38 driver = pro.getProperty("driver");

39 url = pro.getProperty("url");

40 username = pro.getProperty("username");

41 password = pro.getProperty("password");

42 }

43

44 public staticConnection getConnection() {

45 returncon;

46 }

47 public static voidclose(Connection con, Statement stat) {

48

49 if (stat != null) {

50 try{

51 stat.close();

52 } catch(SQLException e) {

53 e.printStackTrace();

54 System.out.println("stat流关闭异常!");

55 }

56 }

57

58 if (con != null) {

59 try{

60 con.close();

61 } catch(SQLException e) {

62 e.printStackTrace();

63 System.out.println("con流关闭异常!");

64 }

65 }

66

67 }

68

69 public static voidclose(Connection con, Statement stat, ResultSet rs) {

70 if (rs != null) {

71 try{

72 rs.close();

73 } catch(SQLException e) {

74 e.printStackTrace();

75 System.out.println("rs流关闭异常!");

76 }

77 }

78

79 if (stat != null) {

80 try{

81 stat.close();

82 } catch(SQLException e) {

83 e.printStackTrace();

84 System.out.println("stat流关闭异常!");

85 }

86 }

87

88 if (con != null) {

89 try{

90 con.close();

91 } catch(SQLException e) {

92 e.printStackTrace();

93 System.out.println("con流关闭异常!");

94 }

95 }

96

97 }

98 }

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public classTest {

public static voidmain(String[] args) {

ResultSet rs = null;

PreparedStatement pst = null;

Connection con =JDBCUtils.getConnection();

try{

pst = con.prepareStatement("SELECT sname,studentno FROM student");

rs =pst.executeQuery();

while(rs.next()) {

System.out.println(rs.getString("sname") + " "

+ rs.getString("studentno"));

}

} catch(SQLException e) {

e.printStackTrace();

}

JDBCUtils.close(con, pst, rs);

}

}

配置文件:

13e04da3cbfa0d76c30e610870fbc96f.png

这样在以后更换数据库后,只需更改配置文件即可,不用再修改程序里面的内容。

利用Properties类,读取配置文件中的信息,通过键获取值。

类加载器getClassLoader()负责读取 Java 字节代码,因为在实际情况下,用户得到的项目没有sre文件夹,只能在bin目录下读取文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值