JDBC 概念:
1)JDBC API:由SUN公司提供的一组规范(接口和类)
2) JDBC驱动:由数据库厂商提供的JDBC驱动,驱动就是对JDBCAPI的实现,封装在一个jar文件
3) 程序员:将要连接的数据库对应的jar包放到项目中,调用JDBCAPI中的方法就可以去操作数据库了。
JDBC访问数据库的详细步骤:
1)创建一个java项目,将oracle驱动jar包拷贝到项目的lib目录中,并且将jar包添加到构建路径中
添加到构建路径后,图标变成下面的样子
- 按照如下步骤来操作数据库,
executeUpdate(String sql):执行更新,包含insert,update和delete操作
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(删除语句),并返回结果
int i = stmt.executeUpdate("delete from dept where deptno=41");
// 第5步:处理结果
if (i > 0) {
System.out.println("删除数据成功");
} else {
System.out.println("删除数据失败");
}
// 第6步:关闭资源
stmt.close();
conn.close();
}
JDBC实现查询操作
调用Statement的executeQuery(String sql)方法返回一个ResultSet对象,此对象提供了getXxx()方法来获取每个字段的值.
ResesultSet有一个记录指针,最开始指针在表头行,每调用一次next()就将指针往下移动一行
Next()方法返回true或false,如果指针所指向的那一行有记录,就返回true,否则返回false.通过while()循环来循环调用next()就可以遍历所有的数据行.
getXxx():表示以某种java类型来获取字段的值,例如字段类型是number(2),那么用getInt(字段名)或getInt(索引)来获取字段的值.
getString(“字段名”)获取char或varchar2类型的字段的值
注意:字段索引从1开始.
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(查询语句),并返回结果
ResultSet rs = stmt.executeQuery("select * from dept");
// 第5步:处理结果
// next()方法将指针往下移动,如果当前行有记录返回true,否则返回false
while (rs.next()) {
// 获取当前行的每个列的数据
int deptno = rs.getInt(1);
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println(deptno + "..." + dname + "..." + loc);
}
// 第6步:关闭资源
rs.close();
stmt.close();
conn.close();
}
```java
<font color=red>注意:如果通过字段的索引获取字段值,索引从1开始</font>
int deptno = rs.getInt(1);
JDBCTest1
package com.sxt.test;
import java.rmi.server.SocketSecurityException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest1 {
// 数据库服务器的地址
private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
// 连接服务器的用户名
private static String user = "scott";
// 连接服务器的用户密码
private static String password = "tiger";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(插入语句),并返回结果
int i = stmt.executeUpdate("insert into dept values(41,'市场部','杭州')");
// 第5步:处理结果
if (i > 0) {
System.out.println("插入数据成功");
} else {
System.out.println("插入数据失败");
}
// 第6步:关闭资源
stmt.close();
conn.close();
}
}
JDBCTest2
package com.sxt.test;
import java.rmi.server.SocketSecurityException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest2 {
// 数据库服务器的地址
private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
// 连接服务器的用户名
private static String user = "scott";
// 连接服务器的用户密码
private static String password = "tiger";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(修改语句),并返回结果
int i = stmt.executeUpdate("update dept set dname='销售部',loc='南京' where deptno=41");
// 第5步:处理结果
if (i > 0) {
System.out.println("修改数据成功");
} else {
System.out.println("修改数据失败");
}
// 第6步:关闭资源
stmt.close();
conn.close();
}
}
JDBCTest3
package com.sxt.test;
import java.rmi.server.SocketSecurityException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest3 {
// 数据库服务器的地址
private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
// 连接服务器的用户名
private static String user = "scott";
// 连接服务器的用户密码
private static String password = "tiger";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(删除语句),并返回结果
int i = stmt.executeUpdate("delete from dept where deptno=41");
// 第5步:处理结果
if (i > 0) {
System.out.println("删除数据成功");
} else {
System.out.println("删除数据失败");
}
// 第6步:关闭资源
stmt.close();
conn.close();
}
}
JDBCTest4
package com.sxt.test;
import java.rmi.server.SocketSecurityException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest4 {
// 数据库服务器的地址
private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
// 连接服务器的用户名
private static String user = "scott";
// 连接服务器的用户密码
private static String password = "tiger";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 第1步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 第2步:创建连接,调用DriverManager.getConnection方法,返回一个连接对象Connection
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println(conn);
// 第3步:创建SQL命令发送器
Statement stmt = conn.createStatement();
// 第4步:执行SQL命令(查询语句),并返回结果
ResultSet rs = stmt.executeQuery("select * from dept");
// 第5步:处理结果
// next()方法将指针往下移动,如果当前行有记录返回true,否则返回false
while (rs.next()) {
// 获取当前行的每个列的数据
int deptno = rs.getInt(1);
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println(deptno + "..." + dname + "..." + loc);
}
// 第6步:关闭资源
rs.close();
stmt.close();
conn.close();
}
}