JDBC学习笔记(获取数据库连接的俩种方式)
发出疑问:JDBC是什么?
JDBC是java操纵数据库的一种方法的总称。
在介绍俩种连接数据库方式之前,还有一项必须进行的操作,即加入mysql驱动
* 加入mysql驱动方法:
* 1、解压mysql-connector-java-5.1.7.zip
* 2、在当前项目下新建lib文件(目录)
* 3、把mysql-connector-java-5.1.7-bin.jar复制到lib目录下* 4、右键mysql-connector-java-5.1.7-bin.jar点击build-path,add to BuildPath加入到类路径下.s
获取连接的俩种方法:
要知道我们操纵数据库,必须获取到数据库的许可,即设置用户,密码,url等信息。所以我们首先必须要做的就是获取数据库的连接。
获得数据库连接的类:Connection(也就是我们接下来操纵数据库的基础)
有俩个方法:
createStatement() : 获取Statement对象
prepareStatement(SQL) : 获取PreparedStatement对象
close() : 关闭数据库连接,在获取数据库连接后必须要关闭。
第一种方式:直接设置数据库的连接信息(不推荐这种方法)
Driver:是一个接口,有数据厂商实现,能从其中获取数据库连接
//1、 创建一个Driver实现类对象
Driver driver=new com.mysql.jdbc.Driver();
//2、准备连接数据库的基本信息:
//url(String类型,确定连接的IP端口号和数据库),
//info(Properties类型,设置user,password)。
String url="jdbc:mysql://localhost:3306/test";
Properties info=new Properties();
info.put("user","root"); //设置数据库使用者
info.put("password","123456"); //设置数据库密码
//3、调用Driver 接口的connect(url,info)获取数据库连接
Connection connection=driver.connect(url,info);
System.out.println(connection);
第二种方式:在配置文件里设置好连接数据库的基本信息,通过读取配置文件获得连接。(此方法较为通用)
如何编写一个通用的获取数据库连接方法?
在类同目录下添加一个配置文件,将url,user,password放入一个配置文件,通过修改配置文件达到不同数据库的连接实现
首先在scr目录下(注意:一定要是src目录下)创建一个配置文件(配置文件以.properties结尾)
在配置文件下设置以下信息:
driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/test
user=root
password=123456
回到获取连接方法:
String drivername=null;
String url=null;
String user=null;
String password=null;
//1、读取配置文件
InputStream in=get_Connection.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties=new Properties(); //创建读取配置文件对象(properties)
properties.load(in); //逐行读取配置文件
drivername=properties.getProperty("driver");
url=properties.getProperty("jdbcUrl");
user=properties.getProperty("user");
password=properties.getProperty("password");
//2、注册驱动(用DriverManager,因为DriverManager已经内置静态代码块,所以只需一句话)
Class.forName(drivername);
//3、通过DriverManager.getConnection(url,user,password)连接数据库
Connection connection=DriverManager.getConnection(url,user,password);
补充知识:
/*
1.与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),
然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。中文叫做类加载器。
Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader
类加载器也是Java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是不是java类,这正是BootStrap。
Java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载。
2.类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,而系统中所有的类,它们实际上也是对象,称为类对象,
它们都是java.lang.Class的实例,虚拟机为每种类型管理一个独一无二的Class对象,也就是说,每个类(型)都有一个Class对象.
3. java中class.forName和classLoader都可用来对类进行加载。properties一般放配置信息的,存放的是键值对格式.如userName=root 这样便于管理!
jdbcUtil.class 得到的是class JdbcUtil ,class对象是java.lang.Class<T>这个类生成的对象,每个类都有一个class对象
getResourceAsStream(),返回的是InputStream 对象,
Properties类是用来操作properties文件的
props.load(in) ,加载进来,进行一行一行的读取
类加载器属于动态的载入,可以提高读写效率.
还可以用java.util.ResourceBundle的类来读取properties文件.ResourceBundle.getBundle("文件名").getString("键");*/