刚学习完java jdbc连接数据库,总结其中的2种方法
第一种:
代码如下:
import java.sql.Connection;
import java.sql.Driver;//
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;//
public class Demo1 {
//连接数据库的URL
private String url="jdbc:mysql://localhost:3306";//使用jdbc协议 数据库的子协议:mysql。jdbc:mysql:完整的协,主机 :localhost 端口:3306
//private String url="jdbc:mysql://localhost:3306/day17";//连接到具体数据库
private String user="root";//用户名
private String password="root";//密码
@Test
public void test1() throws Exception{
//1.创建驱动程序类对象
Driver driver=new com.mysql.jdbc.Driver();//Driver是接口 new com.mysql.jdbc.Driver是Driver接口的实现类,是驱动程序类,需要加载到工程中。(在本工程中在创建一个Folder目录,命名为lib(都可),把驱动程序(后缀为jar文件)拷贝到lib下面,然后右击此驱动程序类,点Build Path,add to Build Path)
//设置用户名和密码:
Properties pros=new Properties();// 构造方法Properties()
:创建一个无默认值的空属性列表。
pros.setProperty("user", user);
/*setProperty方法:
Object |
setProperty(String key, String value) 调用 Hashtable 的方法 put 。 |
*/
pros.setProperty("password", password);
//2.连接数据库
Connection conn=driver.connect(url,pros);
/*返回Connection接口,其实就是是返回Connection接口的实现类(返回接口,并且有Connection conn=接受,就是返回的实现类)
Connection |
connect(String url, Properties info) 试图创建一个到给定 URL 的数据库连接。 |
*/
System.out.println(conn);//如果不为空,表示连接成功
}
}
第二种:
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
public class Demo1 {
private String url="jdbc:mysql://localhost:3306";
private String user="root";
private String password="root";
@Test
public void test2() throws SQLException{
//1.创建驱动程序类对象
Driver driver=new com.mysql.jdbc.Driver();
//Driver driver1=new com.oracle.jdbc.Driver();//可能注册多个驱动程序
2.注册驱动程序
/*
static void |
registerDriver(Driver driver) 向 DriverManager 注册给定驱动程序。 |
*/
DriverManager.registerDriver(driver);
//DriverManager.registerDriver(driver1);//注册多个驱动程序
3.连接到具体的数据库
/*
static Connection |
getConnection(String url, Properties info) 试图建立到给定数据库 URL 的连接。 |
*/
Connection conn= DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
}
分析第二种方法:
@Test
public void test2() throws SQLException{
//1.创建驱动程序类对象
Driver driver=new com.mysql.jdbc.Driver();//进入new com.mysql.jdbc.Driver,这是Driver接口实现类,查看其源代码,如下:
//看其static静态代码块代码,即当Driver的实现类new com.mysql.jdbc.Driver一加载到java虚拟机里面,就将执行,不用创建对象即可执行。
代码中:java.sql.DriverManager.registerDriver(new Driver()); 这一句,即表明,一但Driver接口的实现类new com.mysql.jdbc.Driver一加载到java虚拟机里面,就会注册一个Driver接口的实现类new com.mysql.jdbc.Driver类的对象。
/*
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
// ~ Static fields/initializers
// ---------------------------------------------
//
// Register ourselves with the DriverManager
//
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can‘t register driver!");
}
}
// ~ Constructors
// -----------------------------------------------------------
/**
* Construct a new driver and register it with DriverManager
*
* @throws SQLException
* if a database error occurs.
*/
public Driver() throws SQLException {
// Required for Class.forName().newInstance()
}
}
*/
//Driver driver1=new com.oracle.jdbc.Driver();//可能注册多个驱动程序
2.注册驱动程序
/*
static void |
registerDriver(Driver driver) 向 DriverManager 注册给定驱动程序。 |
*/
DriverManager.registerDriver(driver);
//DriverManager.registerDriver(driver1);//注册多个驱动程序
3.连接到具体的数据库
/*
static Connection |
getConnection(String url, Properties info) 试图建立到给定数据库 URL 的连接。 |
*/
Connection conn= DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
第二种方法改(简写(常用)):
public void test2() throws SQLException{
Class.forName("com.mysql.jdbc.Driver");//代码意思是得到com.mysql.jdbc.Driver类的字节码对象,得到这个类的字节码对象,其实就已经把此类加载到java虚拟机 //里面了 //通过得到字节码对象的方式加载静态代码块(加载此类),从而注册了驱动程序。
//2.连接到具体的数据库
Connection conn= DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
.java为Java的源文件后缀,编写的代码需要写在.java文件中。而.class是字节码文件,是.java源文件通过javac命令编译后生成的文件。Java虚拟机就是去运行.class文件从而实现程序的运行。