Java基础(十三)-----JDBC中的增删改查

2014-11-24 02:55:34 · 作者: · 浏览: 0

JDBC中的CRUD与SQL的关系

JDBC对数据库的增删改查是JDBC技术的基础,是以后学习 事务,批处理,可更新结果等技术的奠基石。使用JDBC与数据库进行连接的根本目的就是操作数据,然而对数据的操作就是增,删,改,查,简称“CRUD”。对数据库的增删改查的基础是SQL技术,利用java程序将sql语句送至数据库,让数据库管理系统对语句进行解析,然后返回相应的结果。

数据库的结构

则部分毋庸多言,数据库中的数据是以二维表的形式存在的,如图所示:

\

SQL简介

SQL(结构化查询语言)分为DML(数据库操作语言)和DDL(数据库定义语言)。

DML包括以下四部分:

SELECT -----查询语句

INSERT INTO -----插入语句< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz5ERUxFVEUgIC0tLS0tyb6z/dPvvuQ8L3N0cm9uZz48L3A+CjxwPjxzdHJvbmc+VVBEQVRFIC0tLS0tuPzQwtPvvuQ8L3N0cm9uZz48L3A+CjxwPkRETLD8wKjS1M/Csr+31qO6PGVtPjxicj4KPC9lbT48L3A+CjxwPjxzdHJvbmc+Q1JFQVRFIERBVEFCQVNFIC0gtLS9qNDCyv2+3b/iPGVtPjxicj4KPC9lbT48L3N0cm9uZz48L3A+CjxwPjxzdHJvbmc+QUxURVIgREFUQUJBU0U8ZW0+PC9lbT4tINDeuMTK/b7dv+I8ZW0+PGJyPgo8L2VtPjwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz5DUkVBVEUgVEFCTEUgLSC0tL2o0MKx7TxlbT48YnI+CjwvZW0+PC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPkFMVEVSIFRBQkxFIC0gseS4/KOouMSx5KOpyv2+3b/ise08ZW0+PGJyPgo8L2VtPjwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz5EUk9QIFRBQkxFIC0gyb6z/bHtPGVtPjxicj4KPC9lbT48L3N0cm9uZz48L3A+CjxwPjxzdHJvbmc+Q1JFQVRFIElOREVYIC0gtLS9qMv30v2jqMvRy/e8/KOpPGVtPjxicj4KPC9lbT48L3N0cm9uZz48L3A+CjxwPjxzdHJvbmc+RFJPUCBJTkRFWCAtIMm+s/3L99L9PC9zdHJvbmc+PC9wPgo8aDI+PHN0cm9uZz7K/b7dv+K1xNT2yb64xLLpPC9zdHJvbmc+PC9oMj4KPGgzPklOU0VSVKGhSU5UT9PvvuQ8L2gzPgo8cD6wstewbXlzcWzK/b7dv+KjrMq508PK/b7dv+K/zbuntsu0tL2o0ru49lBlcnNvbnO1xMr9vt2/4qOs1Nq4w8r9vt2/4tbQtLS9qNK7uPZQZXJzb261xMr9vt2x7aGj08PAtLTmt8XK/b7doaPU2lBlcnNvbtbQsuXI57y40NDK/b7doaO0+sLryr7A/aO6PC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">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;
	}

}