1.什么是JDBC
- JDBC(Java Data Base Connectivity,Java数据库连接)
- 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问
- 它由一组用Java语言编写的类和接口组成
- 有了JDBC,程序员只需用JDBC API写一个程序,就可以访问所有数据库。
- 将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
2.JDBC API
- 提供者:Sun公司
- 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如
DriverManager类 作用:管理各种不同的JDBC驱动
Connection接口
Statement接口
ResultSet接口
- 简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
- DriverManager :依据数据库的不同,管理JDBC驱动
- Connection :负责连接数据库并担任传送数据的任务
- Statement :由 Connection 产生、负责发送执行SQL语句
- ResultSet:负责保存Statement执行后所产生的查询结果
3.JDBC编程步骤
JDBC连接各种常用数据库:
#mysql
#url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSize=50&prepStmtCacheSqlLimit=300
#driverClassName=com.mysql.jdbc.Driver
#mssql
#driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mydb
#mssql jtds
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#url=jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=mydb
#orcale
#driverClassName=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:mydb
#access
#driverClassName=sun.jdbc.odbc.JdbcOdbcDriver
#url=jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=mdb\\mydb.mdb
示例:
public void add() {
Connection conn=null;
PreparedStatement pst=null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.建立连接
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";//连接数据库的路径
String userName="root";//数据库用户名
String password="root";//数据库密码
conn = DriverManager.getConnection(url, userName, password);
//3.操作数据
String sql="INSERT INTO USER(NAME,pwd) VALUES(?,?)";
//发送器
pst = conn.prepareStatement(sql);//预编译
pst.setString(1, "贝西");//传递参数
pst.setString(2, "110");
int result = pst.executeUpdate();//执行语句
if(result>0) {//处理结果集
System.out.println("添加成功!");
}else {
System.out.println("添加失败!");
}
} catch (Exception e) {
e.printStackTrace();
}finally {//无论什么情况都会执行
//4.释放资源
try {
if(pst!=null) {pst.close();}
if(conn!=null) {conn.close();}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
完整登录案例:
package com.sxt.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/*
* 需求:登录
* 1.建立用户表
* 2.输入用户名和密码
* 3.验证
* 4.结果集的处理
*
* sql注入
*
*/
public class TestLogin4 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名:");
String uname = input.next();
System.out.println("请输入密码:");
String upwd=input.next();
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String username="bjsxt";
String pwd="bjsxt";
Connection conn =null;
Statement stt=null;
ResultSet rs=null;
try {
/*1.加载驱动*/
Class.forName(driver);
/*2.连接数据库*/
conn= DriverManager.getConnection(url, username, pwd);
/*3.创建申明(发送器)*/
stt= conn.createStatement();
/*4.发送sql*/
String sql="select * from t_user where uname='"+uname+"' and upwd='"+upwd+"' ";
// int n = stt.executeUpdate(sql);
rs = stt.executeQuery(sql);
System.out.println(sql);
/*5.处理结果集*/
if(rs.next()){
System.out.println("登录成功!");
}else {
System.out.println("您输入的用户名或者密码错误");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
/*6.关闭资源*/
try {
if(stt!=null){
stt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}