执行sql语句的接口
接口作用
Statement接口用于执行静态的sql语句
PreparedStatement接口用于执行预编译sql语句
CallableStatement接口用于执行存储过程的sql语句(call xxx)


1、执行DDL语句

package com.rk.db.b_statement;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 使用Statement执行DDL语句(创建表)
 * @author RK
 *
 */
public class Demo01
{
	static//静态代码段
	{
		try
		{
			//1.驱动注册程序
			Class.forName("com.mysql.jdbc.Driver");
		}
		catch (ClassNotFoundException e)
		{
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
	
	public static void main(String[] args)
	{
		Connection conn = null;
		Statement stmt = null;
		
		String url = "jdbc:mysql://localhost:3306/testdb";
		String user = "root";
		String password = "root";
		
		try
		{
			//2.获取连接对象
			conn = DriverManager.getConnection(url, user, password);
			
			//3.创建Statement
			stmt = conn.createStatement();
			
			//4.准备sql
			String sql = "CREATE TABLE T_Persons(Id INT PRIMARY KEY AUTO_INCREMENT, UserName VARCHAR(20), Pwd VARCHAR(20))";
			
			//5.发送sql语句,执行sql语句,得到返回结果
			int count = stmt.executeUpdate(sql);
			
			//6.输出
			System.out.println("影响了"+count+"行!");//影响了0行!
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			//7.关闭连接(顺序:后打开的先关闭)
			closeQuietly(stmt);
			closeQuietly(conn);
		}
	}
	
	/**
	 * 安静的关闭
	 */
	private static void closeQuietly(AutoCloseable ac)
	{
		if(ac != null)
		{
			try
			{
				ac.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}


2、执行DML语句

package com.rk.db.b_statement;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 使用Statement执行DML语句
 * @author RK
 *
 */
public class Demo02
{
	static
	{
		try
		{
			//1.驱动注册程序
			Class.forName("com.mysql.jdbc.Driver");
		}
		catch (ClassNotFoundException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	public static void main(String[] args)
	{
		Connection conn = null;
		Statement stmt = null;
		
		String url = "jdbc:mysql://localhost:3306/testdb";
		String user = "root";
		String password = "root";
		
		try
		{
			//2.获取连接对象
			conn = DriverManager.getConnection(url, user, password);
			
			//3.创建Statement
			stmt = conn.createStatement();
			
			//4.准备sql
			String sql = "INSERT INTO T_Persons(UserName,Pwd) VALUES('地球人','123456')";//增加
			//String sql = "UPDATE T_Persons SET UserName='火星人' WHERE Id=1";//修改
			//String sql = "DELETE FROM T_Persons WHERE Id=1";//删除
			
			//5.发送sql语句,执行sql语句,得到返回结果
			int count = stmt.executeUpdate(sql);
			
			//6.输出
			System.out.println("影响了"+count+"行!");//影响了1行!
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			closeQuietly(stmt);
			closeQuietly(conn);
		}
	}

	/**
	 * 安静的关闭
	 */
	private static void closeQuietly(AutoCloseable ac)
	{
		if(ac != null)
		{
			try
			{
				ac.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}



3、执行DQL语句

package com.rk.db.b_statement;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

/**
 * 使用Statement执行DQL语句(查询操作)
 * @author RK
 *
 */
public class Demo03
{
	static
	{
		try
		{
			//1.驱动注册程序
			Class.forName("com.mysql.jdbc.Driver");
		}
		catch (ClassNotFoundException e)
		{
			throw new RuntimeException(e);
		}
	}
	
	public static void main(String[] args)
	{
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		
		String url = "jdbc:mysql://localhost:3306/testdb";
		String user = "root";
		String password = "root";
		
		try
		{
			//2.获取连接对象
			conn = DriverManager.getConnection(url, user, password);
			
			//3.创建Statement
			stmt = conn.createStatement();
			
			//4.准备sql
			String sql = "SELECT * FROM T_Persons";
			
			//5.发送sql语句,执行sql语句,得到返回结果
			rs = stmt.executeQuery(sql);
			
			//6.输出
			while(rs.next())
			{
				int id = rs.getInt("Id");
				String userName = rs.getString("UserName");
				String pwd = rs.getString("Pwd");
				System.out.println(id + "\t" + userName + "\t" + pwd);
			}
			
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			closeQuietly(rs);
			closeQuietly(stmt);
			closeQuietly(conn);
		}
	}

	/**
	 * 安静的关闭
	 */
	private static void closeQuietly(AutoCloseable ac)
	{
		if(ac != null)
		{
			try
			{
				ac.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}



4、思维导图


wKioL1czKejhkEiuAADsVB6cT98372.png