一、JDBC介绍
ODBC:也可以连接数据库,但比较麻烦,为了连接对应数据源的应用程序
JDBC:J是Java,是面向接口;Java是面向接口编程;
二、JDBC职责
①Java:客户端——接收数据、拼接sql,发送sql,分析结果、返回结果browser
②db:服务器——接收sql,分析处理,返回结果给java
③数据库连接池:提高效率,不用反复的连接、断开
例如:G3P0、DBCP、Druid…
④连接协议:TCP SSH(虚拟机)
三、基础操作
- 驱动:java.sql.Driver
- 连接:java.sql.Connection
- 静态处理块:java.sql.Statement
- 预处理块:java.sql.PreparedStatement
- 结果集:java.sql.ResultSet
- 结果集元数据:java.sql.ResultSetMetaData
四、数据库连接方式
//MySQL:
String Driver="com.mysql.jdbc.Driver"; //驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver);
Connection con=DriverManager.getConnection(URL.Username.Password);
//Oracle:
String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法
String URL="jdbc:oracle:thin:@//localhost:1521:orcl"; //orcl为数据库的SID
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver);
Connection con = DriverManager.getConnection(URL.Username.Password);
五、实例
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) throws ClassNotFoundException {
// 1、加载驱动:当执行了当前代码之后,会返回一个Class对象,在此对象的创建过程中,会调用具体类的静态代码块
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2、建立连接:第一步中已经将driver对象注册到了drivermanager中,所以此时可以直接通过DriverManager来获取数据库的连接
// 需要输入连接数据库的参数:url(数据库的地址)、username(用户名)、password(密码)
//thin:代表通过TCP协议的连接方式(其他方式:oci);oci:客户端连接方式(oci.dll缺少的话去网上下载即可);localhost:地址;1521:端口号(固定的);orcl:对应的数据库实例名;scott:用户名;tiger:密码
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
// 3、测试连接是否成功
System.out.println(connection);
// 4、定义sql语句:填写正常执行的sql即可
String sql = "select * from emp";
//5、准备静态处理块对象,将sql语句放置到静态处理块中,理解为sql语句放置对象;
// 在执行sql语句的过程中,需要一个对象来存放Sql语句,将对象进行执行时调用的是数据库的服务,数据库会从当前对象中拿到对应的sql语句进行执行
Statement statement = connection.createStatement();
// 6、执行sql语句,返回值对象是结果集合
// 将结果放到resultset中,是返回结果的一个集合;
// 需要经过循环迭代才能获取到其中的每一条记录
// statement在执行时可以选择三种方式:
// ①execute:任何SQL语句都可以执行
// ②executeQueryL:只能执行查询语句
// ③executeUpdate:只能执行DML(数据库操作语言:增删改查)语句
ResultSet resultSet = statement.executeQuery(sql);
// 7、循环处理
// 使用while循环,有两种获取具体值的方式;第一种:通过下标索引编号来获取;第二种是通过列名来获取;
// 推荐使用列名,因为一般列名不会发生变化;
while (resultSet.next()) {
int anInt = resultSet.getInt(1);
System.out.println(anInt);
String ename = resultSet.getString("ename");
System.out.println(ename);
System.out.println("--------------------------");
}
// 8、关闭连接
statement.close();
connection.close();
}
}