JDBC是java database connectivity(java数据库连接)的简称,实现了java对不同数据库的统一操作,简化了程序员的代码书写。java提供了一套类和接口来供程序员使用,其架构层次大致如下!
当java程序想要访问数据库时,一般要有四步:
第一步,加载jdbc驱动,不同的数据库所对应的数据库驱动不同,并且由相应的数据库厂商提供,下载完成后,将对应的数据库驱动jar包导入至项目库中,使用Class.forName(String databaseConnector)方法加载驱动。
第二步,使用DriverManger来获取数据库连接对象,其方法为DriverManager.getConnetion(String url,String user,String password)来连接数据库,执行完该方法后返回Connection对象。
第三步,执行对数据库的操作CRUD(增删改查)。
第四步,关闭连接资源。
代码示例:
package com.csdn.java.charles;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCDemo {
private static final String URL="jdbc:mysql://localhost:3306/DBName"; //数据库实例地址
private static final String NAME="root"; //数据库用户名
private static final String PASSWORD="root"; //用户密码
private static final String DRIVER="com.mysql.jdbc.Driver"; //驱动地址
private static Connection connection=null; //连接对象
private static PreparedStatement pstmt=null; //操作对象
private static ResultSet rs=null; //结果集对象
static //静态代码块加载驱动
{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("MAYBE SOMETHING WRONG WITH YOUR DRIVER");
}
}
public static void getConnetion() throws SQLException
{
connection = DriverManager.getConnection(URL, NAME, PASSWORD);
}
public static void closeAll() throws SQLException
{
if(connection!=null)
{
connection.close();
}
if(pstmt!=null)
{
pstmt.close();
}
if(rs!=null)
{
rs.close();
}
}
public static void select() //查询数据
{
try {
getConnetion(); //获取连接对象
String sql="select * from jdbc_demo"; //定义sql语句
pstmt=connection.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next())
{
String name = rs.getString("username");
int age = rs.getInt("age");
System.out.println(name + " " + age);
}
} catch (SQLException e) {
e.printStackTrace();
}finally
{
try {
closeAll(); //关闭所有资源
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void update() //修改数据
{
try
{
getConnetion(); //获取连接对象
String sql="update jdbc_demo set username='demo1' where age=18"; //定义sql语句
pstmt=connection.prepareStatement(sql);
pstmt.executeUpdate();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try {
connection.close(); //关闭使用过的资源
pstmt.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
public static void delete() //删除数据
{
try {
getConnetion(); //获取连接对象
String sql="delete from jdbc_demo where age=18"; //定义sql语句
pstmt=connection.prepareStatement(sql);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally
{
try {
connection.close(); //关闭使用过的资源
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void add() //增加数据
{
try {
getConnetion(); //获取连接对象
String sql="insert into jdbc_demo(username,age) values(?,?)"; //定义sql语句
pstmt=connection.prepareStatement(sql);
pstmt.setString(1, "demo");
pstmt.setInt(2, 20);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally
{
try {
connection.close(); //关闭使用过的资源
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}