在Java之中,所有数据库操作的类和接口都保存在了Java.sql包中,在这个包中
一个类:DriverManager类
四个接口:Connection,Statement,ResultS,PreparedStatement
所有JDBC连接数据库的操作流程都是固定的,按照如下几部完成:
1. 加载数据库的驱动程序(向容器加载)
2. 进行数据库连接(通过DriverManager类完成,Connection表示连接)
3. 进行数据的CRUD(Statement,PreparedStatement,ResultSet)
4. 关闭数据库操作以及连接(直接关闭连接就够了)
一. 加载数据库的驱动程序
所有的JDBC实际上都是由各个不同的数据库生产商提供的数据库驱动程序,这些都是由 *.jar包给出来的,所以如果要使用那么就需要为其配置CLASSPATH,而后要设置驱动程序的类名称(包.类)
- 新建Java项目
- 在项目中引入mysql-connector-java-5.1.44-bin.jar包(包在MySQL官网中下载)右键项目-Build Path-Add External Archievs…
- 加载数据库驱动程序(一组类和包):
MySQL驱动程序类:com.mysql.jdbc.Driver
加载类使用:Class.forName(“com.mysql.jdbc.Driver”);
二.数据库连接
要想连接数据库需要提供有如下几个信息:
- 数据库的连接地址 : jdbc:mysql://localhost/
- 数据库名称:mydata
- 数据库的用户名 :root
- 数据库的密码 : xxx
因此,可写为:
jdbc:mysql://localhost/mydata?user=root&password=xxx
要连接数据库必须依靠DriverManager类完成,在此类定义有如下方法:
连接数据库:
public static Connection getConnection(String url,String user,String password)
在JDBC里面,每一个数据库的连接都要求使用一个Connection对象进行封装,所以只要有一个新的Connection对象就表示要连接一次数据库
三. 数据库的操作
数据库的操作依靠Statement接口完成
如果想要取得Statement接口的实例化对象则需要依靠Connection接口提供的方法完成
取得Statement接口对象:
public Statement createStatement() throw SQLException
当取得了Statement接口对象之后可以使用以下两个方法实现数据库的操作:
- 数据更新
public int executeUpdate(String sql) throws SQLException
返回更新的行数
- 数据查询
public ResultSet executeQuery(String sql) throws SQLException
返回一个集合
在ReslutSet接口里面定义了如下方法:
向下移动指针并判断是否有数据行:
public boolean next() throws SQLException()
移动之后就可以直接取得当前数据行中所有数据列的内容了:
取出数据列的内容:getInt(),getDouble,getString(),getDate()
数据更新实例:
Statement stmt=conn.createStatement();
String sql="insert into dept values (70,'C','C')";
int len=stmt.executeUpdate(sql);
System.out.println("影响的数据行:"+len);
输出:
数据查询实例:
ResultSet rs=stmt.executeQuery("Select * from dept");
while(rs.next()){
System.out.println(rs.getString("deptno"));
}
四. 关闭数据库
Connection接口提供有close()方法:
public void close() throw SQLException
实例:
数据库mydata中表dept中的内容
Java代码:
import java.sql.*;
public class TestMySqlConnection {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//第一步加载数据库驱动程序
Class.forName("com.mysql.jdbc.Driver");
}catch (Exception ex){
ex.printStackTrace();
}
try{
//数据库的连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/mydata?user=root&password=961218");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("Select * from dept");
while(rs.next()){
System.out.println(rs.getString("deptno"));
}
}catch(SQLException ex){
System.out.println("SQLException"+ex.getMessage());
System.out.println("SQLState:"+ex.getSQLState());
System.out.println("VendorError"+ex.getErrorCode());
}
}
}
输出:
取出了dept表中的deptno