有个问题要说在开头,JDBC驱动是数据库厂商实现的类,并导成jar包,如果我们想使用这个驱动,就得导入相应jar包。我以mysql为例,因此我用的就是mysql的jdbc驱动的jar包。
下面是导入jar包之后的流程。
流程
简单说一下,如何用JAVA代码完成连接,查询操作
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接--创建Connection对象
String url="jdbc:mysql://localhost:3306/";//数据库所在服务器(电脑)的url,如果数据库配置在本机,这个就是固定写法,3306是mysql的端口号,就像tomcat的端口号是8080一样。
String dbName="testcsdn";//数据库的名字,所以url+dbName就是数据库所在服务器(电脑)+数据库的名字
String username="root";//root用户
String password="111111";//数据库密码
Connection conn = DriverManager.getConnection(url+dbName,username,password);
//3.创建sql操作对象--创建Statement对象(这个不安全,但是先用这个演示)
Statment stmt = conn.createStatment();
//4.接收查询结果
ResultSet rs = stmt.executeQuery("select * from t_user");//实际开发中不要写*,这样比较耗费资源啦
//5.将结果打印到控制台
while(rs.next()){
System.out.println(rs.getObject("id"));
System.out.println(rs.getObject("name"));
}
//6.关闭资源
rs.close();
stmt.close();
conn.close();
1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
这句代码的意思是,利用反射,生成一个class对象,这个class对象就是全限定名里的类的class,和编译这个类生成的class是一样的。这么做是为了方便日后换数据库。
总之,这么一句代码就是让Driver类加载一下,然后里面的一些数据会初始化,这样就完成注册。
(但是,我用连接mysql的时候,不注册这个驱动,不写这行代码,剩下的也能运行成功。java之道博大精深,我等自当好好钻研)
2.创建连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testcsdn","root","111");
一个Connection对象就是一个连接会话。相当于使用一个cmd窗口创建一个连接。
getConnection方法有很多重载的方法,目前是有的这个是需要三个参数。
getConnection(String url , String user , String password);
1.String url,这个是数据库的地址
String url = "jdbc:mysql/localhost:3306/testcsdn"
jdbc:mysql
是固定写法
localhost:3306
中,localhost是数据库所在服务器的IP地址,3306是mysql的端口号
testcsdn
是数据库的名称
2.String user,数据库的用户
String user = "root"
3.String password,数据库密码
String password="111111"
3.创建sql操作对象
Statment stmt = conn.createStatement();
使用Statement对象,向数据库发送sql语句。
4.发送sql语句,并取得结果集对象
ResultSet rs = stmt.executeQuery("select * from t_user");
ResultSet就是结果集对象,通过这个对象可以把查询到的数据存放到这个对象里面。
5.展示数据
while(rs.next()){//rs.next()如果rs还有下一条数据则返回true,并让rs指向下一条数据
System.out.println(rs.getObject("id"));//通过列名取得数据
System.out.println(rs.getObject("name"));
System.out.println("---------");
}
就是这个样子嘛,没有啥好说的
6.关闭资源
毕竟服务器资源有限,通道用完不关,最后就会非常臃肿。因此我们要把各种通道关上,关的时候要从下往上关
rs.close();
stmt.close();
conn.close();