JDBC中的CRUD与SQL的关系
JDBC对数据库的增删改查是JDBC技术的基础,是以后学习 事务,批处理,可更新结果等技术的奠基石。使用JDBC与数据库进行连接的根本目的就是操作数据,然而对数据的操作就是增,删,改,查,简称“CRUD”。对数据库的增删改查的基础是SQL技术,利用java程序将sql语句送至数据库,让数据库管理系统对语句进行解析,然后返回相应的结果。
数据库的结构
则部分毋庸多言,数据库中的数据是以二维表的形式存在的,如图所示:
SQL简介
SQL(结构化查询语言)分为DML(数据库操作语言)和DDL(数据库定义语言)。
DML包括以下四部分:
SELECT -----查询语句
INSERT INTO -----插入语句
DELETE -----删除语句
UPDATE -----更新语句
DDL包括以下部分:
CREATE DATABASE - 创建新数据库
ALTER DATABASE- 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
数据库的增删改查
INSERT INTO语句
安装mysql数据库,使用数据库客户端创建一个Persons的数据库,在该数据库中创建一个Person的数据表。用来存放数据。在Person中插如几行数据。代码示例:
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
public class Test2 {
/**
* 用两种方法插入数据
*/
public static void main(String[] args) {
try
{
insertTest_2();
}catch(SQLException e)
{
e.printStackTrace();
}
}
//没有使用预编译语句
public static void insertTest_1() throws SQLException
{
//1,注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2,获得链接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons", "root", "root");
//3,创建语句
Statement stmt=conn.createStatement();
String sql="insert into Person values (1,'Adams','John','Oxford Street','London')";
//4,执行语句
int n=stmt.executeUpdate(sql);
if(n>0)
{
System.out.println("插入成功");
}else
{
System.out.println("插入失败");
}
conn.close();
stmt.close();
}
//使用预编译语句:可以有效的提高效率,放置sql注入。
public static void insertTest_2() throws SQLException
{
Connection conn =getConnection();
String sql ="insert into Person values (?,?,?,?,?)";
PreparedStatement stmt=conn.prepareStatement(sql);
stmt.setInt(1, 4);
stmt.setString(2, "Wang");
stmt.setString(3, "Wu");
stmt.setString(4, "Yushang Road");
stmt.setString(5, "Shanghai");
int n=stmt.executeUpdate();
if(n>0)
{
System.out.println("插入成功");
}else
{
System.out.println("插入失败");
}
}
//在做第二个方法的时候,将获取Connection的代码提取出来
public static Connection getConnection()
{
Connection conn=null;
try
{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons","root","root");
}catch(SQLException e)
{
e.printStackTrace();
}
return conn;
}
}
在开发中一般使用预编译语句,以提高效率。
SELECT语句
首先创建一个Persons的数据库。代码示例
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/*
* 获取数据库中的名字
*
*/
public class Test1 {
public static void main(String[] args) {
test();
}
static void test()
{
//1,注册驱动
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2,建立连接
Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons","root","root");
//3,创建语句
Statement stmt = conn.createStatement();
//4,执行查询
ResultSet rs = stmt.executeQuery("select LastName from Person");
//5,处理结果
while(rs.next())
{
System.out.println(rs.getString("LastName"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
DELETE 语句
代码示例:
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test4 {
/**
* 删除掉所有城市是上海的记录
*/
public static void main(String[] args) throws SQLException {
Connection conn=getConn();
Statement stmt=conn.createStatement();
int n=stmt.executeUpdate("delete from Person where City='Shanghai' ");
if(n>0)
{
System.out.println("共有"+n+"条数据被删除");
}
}
public static Connection getConn()
{
Connection conn=null;
try
{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons", "root", "root");
}catch(SQLException e)
{
e.printStackTrace();
}
return conn;
}
}
UPDATE语句:
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test5 {
/**
* 更改某一列的值
*/
public static void main(String[] args) throws SQLException{
//1,注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2,获得链接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons","root","root");
//获得语句
Statement stmt=conn.createStatement();
//
String sql="update Person set FirstName='David' where FirstName='John'";
//执行语句
int n=stmt.executeUpdate(sql);
if(n>0)
{
System.out.println("修改成功");
}else
{
System.out.println("修改失败");
}
conn.close();
stmt.close();
}
}
DELETE语句:
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test4 {
/**
* 删除掉所有城市是上海的记录
*/
public static void main(String[] args) throws SQLException {
Connection conn=getConn();
Statement stmt=conn.createStatement();
int n=stmt.executeUpdate("delete from Person where City='London' ");
if(n>0)
{
System.out.println("共有"+n+"条数据被删除");
}
conn.close();
stmt.close();
}
public static Connection getConn()
{
Connection conn=null;
try
{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Persons", "root", "root");
}catch(SQLException e)
{
e.printStackTrace();
}
return conn;
}
}