JDBC
一、 什么是JDBC
Java DataBase Connectivity,Java数据库连接。它提供了一组相关的API,可以Java程序中实现对于数据库的访问和操作(实际就是在JAVA程序中向数据库传送SQL语句)
二、JDBC核心接口与类
例1:查询
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//一个最简单的JDBC例题,实现了查询dept表所有的信息
public class Test1 {
public static void main(String[] args) {
//1载入JDBC驱动程序,加载完驱动的效果是,可以让JAVA程序和数据库软件取得联系。
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2Connection表示数据库连接对象,一个Connection对象就是在用一个用户身份登录到服务器。
//三个参数url,username,password
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//3创建语句对象(要执行的SQL语句对象),在这一步骤上你可以有三个选择,
//Statement 简单语句对象
//PreparedStatement 预编译语句对象
//CallableStatement 可调存储过程的语句对象
Statement stmt=con.createStatement();
//4得到查询结果,ResultSet结果集对象//这里就让写SELECT语句。
ResultSet rs=stmt.executeQuery("select * from dept");
while(rs.next()){
//int deptno=rs.getInt(1);
int deptno=rs.getInt("deptno");
String dname=rs.getString("dname");
String loc=rs.getString("loc");
System.out.println(deptno+" "+dname+" "+loc);
}
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null&&con.isClosed()==false){
con.close();
}
} catch (ClassNotFoundException e) {
System.out.println("加载oracle驱异常");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL异常!");
}
System.out.println("finish!");
}
}
例2:插入记录
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//一个最简单的JDBC例题,实现了insert
public class Test2 {
public static void main(String[] args) {
//1载入JDBC驱动程序,加载完驱动的效果是,可以让JAVA程序和数据库软件取得联系。
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2Connection表示数据库连接对象,一个Connection对象就是在用一个用户身份登录到服务器。
//三个参数url,username,password
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//3创建语句对象(要执行的SQL语句对象),在这一步骤上你可以有三个选择,
//Statement 简单语句对象
//PreparedStatement 预编译语句对象
//CallableStatement 可调存储过程的语句对象
Statement stmt=con.createStatement();
//执行增,删,改记录,返回的是改变的行数 ,参数可以是update,insert,delete语句,DDL
int row=stmt.executeUpdate("insert into n2 (select * from n1)");
//int row2=stmt.executeUpdate("create table n3(id int)");
System.out.println(row);
// System.out.println(row2);
if(stmt!=null){
stmt.close();
}
//con关闭时提交
if(con!=null&&con.isClosed()==false){
con.close();
}
} catch (ClassNotFoundException e) {
System.out.println("加载oracle驱异常");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL异常!");
}
System.out.println("finish!");
}
}
例3: 演示日期时间类型在查询中的应用
package com.dongruan.demo1;
/*
create table a1(id int primary key,mydate date);
insert into a1 values(1,sysdate);
insert into a1 values(2,sysdate);
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
public class Test1 {
public static void main(String[] args) {
//1载入JDBC驱动程序,加载完驱动的效果是,可以让JAVA程序和数据库软件取得联系。
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2Connection表示数据库连接对象,一个Connection对象就是在用一个用户身份登录到服务器。
//三个参数url,username,password
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//3创建语句对象(要执行的SQL语句对象),在这一步骤上你可以有三个选择,
//Statement 简单语句对象
//PreparedStatement 预编译语句对象
//CallableStatement 可调存储过程的语句对象
Statement stmt=con.createStatement();
//4得到查询结果,ResultSet结果集对象//这里就让写SELECT语句。
ResultSet rs=stmt.executeQuery("select * from a1");
while(rs.next()){
int id=rs.getInt("id");
Timestamp time=rs.getTimestamp("mydate");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
System.out.println(id+","+sdf.format(time));
}
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null&&con.isClosed()==false){
con.close();
}
} catch (ClassNotFoundException e) {
System.out.println("加载oracle驱异常");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL异常!");
}
System.out.println("finish!");
}
}
例4:运用PreparedStatement实现了insert
package com.dongruan.demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//运用PreparedStatement实现了insert
public class Test3 {
public static void main(String[] args) {
//1载入JDBC驱动程序,加载完驱动的效果是,可以让JAVA程序和数据库软件取得联系。
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2Connection表示数据库连接对象,一个Connection对象就是在用一个用户身份登录到服务器。
//三个参数url,username,password
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//3创建语句对象(要执行的SQL语句对象),在这一步骤上你可以有三个选择,
//Statement 简单语句对象
//PreparedStatement 预编译语句对象
//CallableStatement 可调存储过程的语句对象
//Statement stmt=con.createStatement();
//执行增,删,改记录,返回的是改变的行数 ,参数可以是update,insert,delete语句,DDL
//int row=stmt.executeUpdate("insert into n2 (select * from n1)");
//int row2=stmt.executeUpdate("create table n3(id int)");
PreparedStatement stmt=con.prepareStatement("insert into n1 values(?,?)");
stmt.setInt(1,101);
stmt.setString(2,"101");
int row=stmt.executeUpdate();
System.out.println(row);
// System.out.println(row2);
if(stmt!=null){
stmt.close();
}
//con关闭时提交
if(con!=null&&con.isClosed()==false){
con.close();
}
} catch (ClassNotFoundException e) {
System.out.println("加载oracle驱异常");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQL异常!");
}
System.out.println("finish!");
}
}
如何应用ODBC的方式连接数据库,实现JDBC操作?说一下步骤
首先,在控制面板的,管理工具的,ODBC数据源里配置一个数据源,比如叫demo
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:demo","scott","tiger");