mysql的class.forname_Class.forName()详细介绍

Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。调用 forName("X") 将导致命名为 X 的类被初始化。

01package com.java.jvm;

02

03public class ClassTest {

04public  static void main(String[] arg){

05try {

06Class  userClass = Class.forName("com.java.jvm.User");

07System.out.println("userClass="+userClass);

08User user = (User) userClass.newInstance();

09System.out.println("user="+user);

10}catch (ClassNotFoundException e) {

11e.printStackTrace();

12}catch (InstantiationException e) {

13e.printStackTrace();

14}catch (IllegalAccessException e) {

15e.printStackTrace();

16}

17}

18} 打印结果:

1userClass=class com.java.jvm.User

2user=User [name=null, age=null, address=null]

Class.forName("")返回的是类(Class)

Class.forName("").newInstance()返回的是object其实和new 的关键字作用相同。

调用 forName("X") 将导致命名为 X 的类被初始化,这句话是官网API上的一句话,很迷茫,有点不理解,所以在User类中,添加了static语句块和User构造函数

01package com.java.jvm;

02

03public class User {

04

05static{

06System.out.println("static ---");

07}

08

09public User(){

10System.out.println("name="+name);

11name="xiaotian";

12}

13

14private String name;

15private Integer age;

16private String address;

17

18public String getName() {

19return name;

20}

21public void setName(String name) {

22this.name = name;

23}

24public Integer getAge() {

25return age;

26}

27public void setAge(Integer age) {

28this.age = age;

29}

30public String getAddress() {

31return address;

32}

33public void setAddress(String address) {

34this.address = address;

35}

36@Override

37public String toString() {

38return "User [name=" + name +", age=" + age +", address=" + address

39+"]";

40}

41

42} 结果打印:

1static ---

2userClass=class com.java.jvm.User

3name=null

4user=User [name=xiaotian, age=null, address=null]

forName("X")执行的时候,调用了User中的静态语句块,newInstance()执行的时候调用了构造函数。

连接数据库的简单代码

01// 驱动程序名

02String driver ="com.mysql.jdbc.Driver";

03

04// URL指向要访问的数据库名student

05String url ="jdbc:mysql://127.0.0.1:3306/student";

06

07// MySQL配置时的用户名

08String user ="root";

09

10// MySQL配置时的密码

11String password ="root";

12

13try {

14// 加载驱动程序

15Class.forName(driver);

16

17// 连续数据库

18Connection conn = DriverManager.getConnection(url, user, password);

19

20if(!conn.isClosed())

21System.out.println("Succeeded connecting to the Database!");

22

23// statement用来执行SQL语句

24Statement statement = conn.createStatement();

25

26// 要执行的SQL语句

27String sql ="select * from student";

28

29// 结果集

30ResultSet rs = statement.executeQuery(sql); 其中加载数据库驱动

Class.forName(driver);加载mysql驱动,执行static语句块,使将Driver对象注册到DriverManager中,然后上面就获得了数据库连接

01package com.mysql.jdbc

02

03public class Driverextends NonRegisteringDriverimplements java.sql.Driver {

04// ~ Static fields/initializers

05// --------------------------------------------- //   A

06// Register ourselves with the DriverManager

07//

08static {

09t ry {//使将Driver对象注册到DriverManager中

10java.sql.DriverManager.registerDriver(new Driver());

11}catch (SQLException E) {

12throw new RuntimeException("Can't register driver!");

13}

14}

15// ~ Constructors

16// -----------------------------------------------------------

17/**

18* Construct a new driver and register it with DriverManager

19*

20* @throws SQLException

21*              if a database error occurs.

22*/

23public Driver()throws SQLException {

24// Required for Class.forName().newInstance()

25}

26}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值